满足条件时插入单元格

时间:2018-01-24 15:40:48

标签: excel-vba vba excel

我的Excel工作表有6列,如下所示: A栏:新行, B栏:新的Dup, C栏:新布料, D栏:位置, E栏:真排序, F列:Excel排序,

我想知道如何编写一个搜索B列的宏以及每次出现的单词" Right"在B列中,在D,E和F列的相应行中插入一个空格,然后将上面一行中相应列的结果复制到这些单元格中。

ie:第一次出现单词"对"在B187。宏将在D187,E187和F187中插入一个空白单元格,然后将D186中的数据复制到D187中,将数据从E186复制到E187中,将数据从F186复制到F187中。

该文件有750行。 感谢您的任何见解! 卡尔

1 个答案:

答案 0 :(得分:0)

我不明白你为什么要在单元格中添加空格然后从上面的行复制细节,所以下面的代码只是复制上面一行的值:

Sub foo()
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
'declare and set your worksheet, amend as required
LastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
'get the last row with data on Column B
For i = 1 To LastRow 'loop from first row to last
    If UCase(ws.Cells(i, 2)) = "RIGHT" Then 'check if the word "Right" is in cell regardless of it being uppercase or lowercase
        ws.Range("D" & i & ":F" & i).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        ws.Cells(i, 3) = ws.Cells(i - 1, 3) 'get values from row above
        ws.Cells(i, 4) = ws.Cells(i - 1, 4)
        ws.Cells(i, 5) = ws.Cells(i - 1, 5)
    End If
Next i
End Sub