Макрос очищает все ячейки вместо тех, которые равны 0 после Vlookup

Если я правильно понимаю, основная проблема заключается в том, что нет универсально принятого сопоставления JSON для карты Java, особенно когда ключ более сложный, чем строка. Я видел, что GSON использует один подход (рассматривайте ключ как объект), тогда как Джексон берет другое (сериализует ключ к строке). C #, эквивалентный Карте (Словарь), использует третий подход (рассматривая каждую запись как объект с ключом по своему усмотрению со свойствами, называемыми «ключ» и «значение»). Поскольку Swagger пытается быть агностиком для языка и сериализатора, это ставит его в невозможное положение.

0
задан Pᴇʜ 15 January 2019 в 15:49
поделиться

2 ответа

Попробуйте приведенный ниже код, он очистит значения всех ячеек с 0 в столбце «I». Пояснения в комментариях к коду.

Option Explicit

Sub ClearZerosOnly()

Dim Rng As Range, myRange As Range
Dim LastRow As Long
Dim Sht As Worksheet

Set Sht = ThisWorkbook.Sheets("Sheet1") ' change "sheet1" to your sheet's name
With Sht
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    .Range("A1").AutoFilter

    Set Rng = .Range("A1:V" & LastRow)
    Rng.AutoFilter Field:=9, Criteria1:="0" ' set the Auto-Filter criteria 

    ' set the Visible range and column I (from row 2, without header)
    Set myRange = Application.Intersect(Rng.SpecialCells(xlCellTypeVisible), .Range("I2:I" & LastRow))
End With

If Not myRange Is Nothing Then myRange.ClearContents

End Sub
0
ответ дан Shai Rado 15 January 2019 в 15:49
поделиться

Я полностью согласен с комментарием PEH о том, что следует избегать операторов select и тому подобного, и далее я бы добавил, что лучше всего избегать таких вещей, как Activesheet - вместо этого всегда указывайте, на какой лист вы ссылаетесь.

В любом случае, есть много способов сделать то, что вы ищете. Одним из способов было бы использовать метод Find класса Range, он работает так же, как диалог поиска и замены, который вы получаете при нажатии Ctrl + F.

Cells.Copy
Cells.PasteSpecial xlPasteValues ' replace formulas with their result
Cells.Replace What:="0", Replacement:="", LookAt:=xlWhole ' replace "0" with an empty string
0
ответ дан Absinthe 15 January 2019 в 15:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: