我在一个工作表上列出了一个产品列表,您可以在其中选择您想要的每种产品的数量,但并非每种产品都有价值。在一个单独的工作表中,我希望它只拉出选择了数量的产品。请指教。
第一张工作表:
A B
a 3
c 45
d
e
f 10
所需的第二张工作表:
A B
b 3
c 45
f 10
你可以用一个简单的 VBA 子程序得到你想要的:
Sub notNull()
Dim count As Integer
count = Application.WorksheetFunction.CountA(Range("A:A"))
Dim i As Integer
i = 1
Dim rowCount As Integer
rowCount = 1
Do While i <= count
If (Range("B" & i) <> "") Then
Worksheets("Sheet2").Range("A" & rowCount) = Range("A" & i)
Worksheets("Sheet2").Range("B" & rowCount) = Range("B" & i)
rowCount = rowCount + 1
End If
i = i + 1
Loop
End Sub
它的作用是遍历 A 列中包含数据的所有行,检查 B 列中的关联值是否等于“”,如果不是,则将这两个值复制到另一张表上。希望这可以帮助!
如果您/您的最终用户被允许使用宏,您可以使用 VBA 子例程来实现此目的。在下面的示例中,我假设您没有重命名工作表,它们分别称为“Sheet1”和“Sheet2” - 如果您已重命名它们,则必须在代码中更改它们以匹配。
1) 显示开发者工具栏:
[http://www.traineetrader.com/excel-quick-tips-howto-enable-the-developer-toolbar-in-excel-20102011/][1]
2)在开发者工具栏点击插入,然后添加一个按钮(不管在哪里)
3)右键单击按钮和“分配宏”,然后单击“新建”
4)这段代码应该这样做:
Sub Button1_Click()
Dim row As Integer
row = 1
newrow = 1
Do Until Worksheets("Sheet1").Cells(row, 1).Value = ""
If Worksheets("Sheet1").Cells(row, 2).Value <> "" Then
Worksheets("Sheet2").Cells(newrow, 1).Value = Worksheets("Sheet1").Cells(row, 1).Value
Worksheets("Sheet2").Cells(newrow, 2).Value = Worksheets("Sheet1").Cells(row, 2).Value
newrow = newrow + 1
End If
row = row + 1
Loop
End Sub
任何问题 - 让我知道!