如何将表格转换为一列(仅显示我在表格购物清单中提到的内容)

如何将表格转换为一列(仅显示我在表格购物清单中提到的内容)

我有一张购物清单表,看起来像这个例子:

(a1) 蔬菜 (b1) 数量 (c1) 水果 (d1) 数量 (e1) 饮料 (f1) 数量

第 2 行等等是列表。所以我只想看到我在一行中标记的内容。

例如:蔬菜中有:西红柿 3 公斤、黄瓜 0 公斤、胡萝卜 1 公斤。
因此,在一列中,我看到标题(蔬菜)和西红柿 3 公斤、胡萝卜 1 公斤(不含黄瓜),等等......

您可以通过 VBA 或 FORMULA 来完成此操作,也可以在另一张 Sheet 中完成此操作...无论您想要什么。

在此处输入图片描述

如您所见,黄瓜、苹果和橙子未列在右侧的表格中。

答案1

虚拟专用网络代码应该可以工作:

Public Sub summary()
    Dim wk As Workbook
    Dim ws, ws1 As Worksheet
    Set wk = ThisWorkbook
    Set ws = wk.Sheets("Sheet1")
    Set ws1 = wk.Sheets("Sheet2")
    ws1Columns = 1
    ws1Rows = 1
    maxColumns = ws.Cells(1, Columns.Count).End(xlToLeft).Column
    For i = 1 To maxColumns Step 2
        theRows = 1
        theCell = ws.Cells(theRows, i)
        theCell2 = ws.Cells(theRows, i + 1)
        While theCell <> ""
            If theCell2 <> "" Then
                ws1.Cells(ws1Rows, ws1Columns) = theCell
                ws1.Cells(ws1Rows, ws1Columns + 1) = theCell2
                ws.Cells(theRows, i).Copy
                ws1.Cells(ws1Rows, ws1Columns).PasteSpecial Paste:=xlPasteFormats
                ws.Cells(theRows, i + 1).Copy
                ws1.Cells(ws1Rows, ws1Columns + 1).PasteSpecial Paste:=xlPasteFormats
                ws1Rows = ws1Rows + 1
            End If
            theRows = theRows + 1
            theCell = ws.Cells(theRows, i)
            theCell2 = ws.Cells(theRows, i + 1)
        Wend
    Next i
End Sub

使用 ALT+F11 打开 VBA/宏,在本工作簿添加新的模块并粘贴此代码。

执行宏,如果原始数据在,Sheet1则最终结果将在Sheet2

相关内容