如果单元格不为null,则返回不同选项卡中“a”列中的值

我有一个工作表上列出的产品列表,您可以select每个您想要的数量,但不是每个产品都有价值。 在一个单独的工作表中,我希望它只能拉过有选定数量的产品。 请指教。

第一个工作表:

AB a 3 c 45 def 10 

期望的第二个工作表:

 AB 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中的相关值是否等于“”,如果不相等,则将两个值复制到另一个表中。 希望这可以帮助!

如果您/您的最终用户允许使用macros,则可以使用VBA子例程来实现此目的。 在下面的例子中,我假设你没有重命名工作表,他们分别被称为“Sheet1”和“Sheet2” – 如果你已经重命名他们,你将不得不改变他们在代码匹配。

1)显示开发者工具栏:

[http://www.traineetrader.com/excel-quick-tips-howto-enable-the-developer-toolbar-in-excel-20102011/][1]

2)在开发者工具栏上点击插入,然后添加一个button(无所谓在哪里)

3)右键单击button和“分配macros”,然后单击“新build”

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 

任何问题 – 让我知道!