Страницы: 1
RSS
VBA: очистить ячейку, если в ячейке 0
 
Доброго дня,

Понадобилась вот такая конструкция. Условие if cell = "0", then cell = "", other, cell value"
Конструкция = if(cellA1=0,"",cellA1) - не подходит.

Что-то подобное...
Спасибо, кто отзовется.
Код
Public Function f_x5()
Dim myVariant As String
    If (myVariant = "0") Then ""
    End If
End Function
Изменено: Alex D - 19.08.2019 11:53:29
 
Alex D, добрый день.
Код
Sub f_x5()
Dim a&
lastrow1 = Sheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row
  For a = 1 To lastrow1
    If Cells(a, 1).value = "0" Then Cells(a, 1) = ""
  Next

End Sub
Изменено: Hellmaster - 19.08.2019 11:49:59
 
Код
If myVariant = "0" Then   myVariant.ClearContents

Если одной строкой, то End If
В ячейке точно текст "0", не число 0? myVariant - это откуда? В функцию что-то передаваться должно?
Надо пример в файле показывать
 
Цитата
Hellmaster написал:
Alex D , добрый день.
Спасибо, что отозвались... не совсем подходит нужна пользовательская функция.
 
Цитата
vikttur написал:
В ячейке точно текст "0", не число 0?
Спасибо за замечание... ячейка всегда число
 
Цитата
vikttur написал: В ячейке точно текст "0", не число 0? В функцию что-то передаваться должно?
Спасибо за замечание... ячейка всегда число
Функция, ничего не передает...
Пример. Присутствует  такая формула в ячейке
Код
=SUMIFS(INDEX(Loc!$A:$EB,,MATCH(B$10,Loc!$A$1:$EB$1,0)),Loc!$E:$E,$A$10,Loc!$F:$F,$A$11)
, она возвращтает всегда число, и если это число = 0 то нужно ноль убрать на "".

Для этого и нужна пользовательская функция.
 
Цитата
Alex D написал: Пример.
Нет, пример - это файл, демонстрирующий проблему

Цитата
если это число = 0 то нужно ноль убрать на "". Для этого и нужна пользовательская функция.
Может, достаточно в параметрах листа снять галку, ответственную за отображение нулевых значений?
 
Цитата
vikttur написал:
Может, достаточно в параметрах листа снять галку, ответственную за отображение нулевых значений?
Это тоже, не подходит к сожалению
https://support.office.com/en-us/article/display-or-hide-zero-values-3ec7a433-46b8-4516-8085-a00e9e476b03
Цитата
vikttur написал:
Нет, пример - это файл, демонстрирующий проблему
Приложил Range("W7:AH7) выделил (Весь фаил показать не могу)

Как вернуть... значение ячейки.

Код
Public Function f_x5(x As Integer) As String
        If x = 0 Then
            f_x5 = ""
        ElseIf x <> 0 Then
            f_x5 = "cell value"
        End If
End Function
Изменено: Alex D - 19.08.2019 14:14:00
 
Код
Public Function f_x5(x As Long)
    If x = 0 Then f_x5 = "" Else f_x5 = x
End Function

Наличие текста среди числовых данных (а это "" - текст нулевой длины) может навредить последующим вычислениям
Формат ячеек 0;; скроет ненужные нули без применения функции.
 
Спасибо, большое ... работает.
Единственное, формат ячейки не меняется. Формат ячейки должен быть #'000.
Если все вырожение *1, затем формат меняется.
 
Функция не может управлять форматом ячейки. Проблема в том, чтобы задать формат сразу, при создании таблицы?
 
Формат ячейке в таблице для числовых значений задан заранее - #'000. Как только подключаю функция значение возвращается в стандартный вид числа.
 
А условное форматирование Вам не подойдет
 
Спасибо, но не совсем подходит
 
Вот так работат только для числовых значений! Спасибо большое!
Код
Public Function f_x5(x As Variant) As Variant
    If x = 0 Then 
    f_x5 = "" 
    Else f_x5 = x
End Function
 
Проверяли? )
У Вас  оператор не закрыт (End If)

Цитата
Alex D написал: работат только для числовых значений
Зачем было менять тип переменной х?
 
Цитата
vikttur написал:
Проверяли? )
В том то и дело что проверял... Ваш пример был основой.
Основная трудность было в том что ячейка (только числовое значение) имееи формат #'000 - как только применяешь функцию она возврашет такое же числовое значени только в виде "General" и возможности изменить этот формат - нет. (прсто не меняется, ни в проценты, ни в волютное значение).

Цитата
vikttur написал:
У Вас  оператор не закрыт (End If)
Как только, закрываю End If -> Compile error (End if, without block If)
Цитата
vikttur написал:
Зачем было менять тип переменной х?
Путем перебора, задекларировал, так как задекларировал :) . Может странно, но работает.
Страницы: 1
Наверх