EXCEL VBA help - функция для вставки пустой ячейки - PullRequest
3 голосов
/ 04 июня 2010

Мне нужна помощь с функцией Excel VBA.

У меня есть данные, которые выглядят так

    ColA     ColB
    a123     a123
    a124     a124
    a127     a126
    a128     a127
    ....     ....

Я хочу сравнить содержимое ColA и ColB. Если содержимое отличается, я хочу вставить пустую ячейку в столбец A. Таким образом, результат будет выглядеть следующим образом:

ColA     ColB
a123     a123
a124     a124
         a126
a127     a127
....     ....

Любые предложения о том, как я мог бы сделать это в Excel.

Заранее спасибо


ОБНОВЛЕНО


Я попробовал описанный ниже метод со следующим кодом, чтобы вставить ячейку, и она работает нормально, теперь я понимаю, что когда мне нужно запустить ее, мне нужно больше функциональности.

first_col.Cells(row, 1).Select
Selection.Insert Shift:=xlDown

если значение в ColA с удаленным «a» меньше, чем значение в ColB с удаленным «a», я хочу вставить ячейку в ColA, и мне также нужно вставить ячейку в той же позиции в ColC (содержит другие данные). Если ColB имеет большее значение, я хочу вставить ячейку только в ColB. Я думаю, что знаю, что делать внутри оператора If, но я не уверен, как создать IF. Вот что я думаю

Set other_col = Range("C1:C100")

//if substring of ColA > substring of ColB
   first_col.Cells(row, 1).Select
   Selection.Insert Shift:=xlDown
   other_col.Cells(row, 1).Select
   Selection.Insert Shift:=xlDown
//else 
   second_col.Cells(row, 1).Select
   Selection.Insert Shift:=xlDown

Ответы [ 3 ]

3 голосов
/ 04 июня 2010

Ваше сравнение может выглядеть примерно так:

Sub Expand()

    Dim first_col As Range, cell As Range
    Dim row As Integer

    Set first_col = Range("A2:A100")

    For Each cell In first_col
        If Right(cell.Value, 3) < Right(cell.Offset(0, 1).Value, 3) Then
            ' Shift in here
        End If
    Next cell

End Sub

Функция «Right» просматривает количество символов справа, как указано вторым параметром.

Еще одно замечание: в таких разделах кода используется метод .select:

first_col.Cells(row, 1).Select
Selection.Insert Shift:=xlDown

Может быть обрезано так:

first_col.cells(row, 1).insert shift:=xlDown

«select» и «selection» - это остатки записи макросов и обычно не используются в коде VBA.

1 голос
/ 04 июня 2010

Я не знаю точного кода VBA для вставки строки, но вы можете найти это, записав макрос. Вот оставшаяся часть кода (для просмотра столбцов и сравнения):

Sub Expand()
    Dim first_col as Range
    Dim second_col as Range
    Dim row as Integer

    Set first_col = Range("A2:A100")
    Set second_col = Range("B2:B100")

    For row = 1 To second_col.Rows.Count
        If first_col.Cells(Row, 1).Value <> second_col.Cells(Row, 1).Value Then
            '// code to insert the row'
        End If
    Next row
End Sub
0 голосов
/ 23 ноября 2013

Я записываю макрос, выбирая несколько ячеек и вставляя и я попытался создать свой собственный саб, и это работает

Range("c16:e16").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

редактировать заметку этот код вызывает unmerg к объединенным ячейкам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...