VBA动态过滤Excel列

时间:2018-10-30 12:53:51

标签: excel vba excel-vba

我正在尝试为规则编写宏。

A   B   C   D   E

X   1   RT  YY  SOW  
D   3   FT  GH  TOW  
F   4   FG  TY  

规则:在E列上一一过滤,并复制A和C列中的值。E列中的值不是预先确定的。因此,我可以在E列中使用具有不同值的excel,因此无法对编码条件进行硬编码。

我想过滤第一个值(例如,播种),然后获取任何行,将这些行的E列值复制到A和C列中。然后,我过滤第二个值(例如,拖曳)并复制到A和C列中。

结果应该像这样

A     B    C   D   E

SOW   1   SOW  YY  SOW  
TOW   3   TOW  GH  TOW  
F     4   FG   TY  

注意:现在当然会有数百行,而不会只有一行。因此需要一个宏。

说明:我想从E列中提取空白,然后复制到A列和C列的相应行中。但是由于E列没有严格定义的值,因此我无法硬编码我的过滤条件。 E列可能具有不同数量的唯一值和组合。我想按原样使用这些值,并复制到A和C列中。

1 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,您只想复制E列中不为空的值。因此,您要对其进行过滤。

VBA代码:

Sub CopyNoneEmptyCells()

Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets("Sheet1") 'Define your worksheet name
Dim lrow As Long
Dim i As Long


lrow = ws.Cells(Rows.Count, 1).End(xlUp).Row 'Check last row in column A 'Find the last row in column A

For i = 2 To lrow 'Loop from row 2 until last row. I assume you have a header at row 1
    If ws.Cells(i, 5).Value <> "" Then 'If cell is not empty in column E, then
         ws.Cells(i, 1).Value =  ws.Cells(i, 5).Value 'Copy value from column E to Column A
         ws.Cells(i, 3).Value =  ws.Cells(i, 5).Value 'Copy value from column E to Column C
    End If
Next i 'Next row
End Sub