0

我在一个工作表上列出了一个产品列表,您可以在其中选择您想要的每种产品的数量,但并非每种产品都有价值。在一个单独的工作表中,我希望它只拉出选择了数量的产品。请指教。

第一张工作表:

A        B

a        3

c       45

d   

e   

f       10

所需的第二张工作表:

A       B

b       3

c      45

f      10
4

2 回答 2

2

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

于 2012-07-27T13:43:51.710 回答
1

如果您/您的最终用户被允许使用宏,您可以使用 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

任何问题 - 让我知道!

于 2012-07-27T13:49:18.790 回答