У меня есть таблица списка покупок, которая выглядит как этот пример:

(a1) овощи (b1) количество (c1) фрукты (d1) количество (e1) напитки (f1) количество

и в строке 2 и так далее есть список. поэтому я хочу видеть только то, что я отмечаю в одном ряду.

Пример: в овощах: 3 кг помидоров, огурец 0, 1 кг моркови.
так в одной колонке я вижу название (овощи) и 3 кг помидоров и 1 кг моркови (без огурца) и так далее ...

Вы можете сделать это с помощью VBA или FORMULA, и вы можете сделать это на другом листе ... все, что вы хотите.

как вы видите, огурцы, яблоки и апельсины НЕ перечислены в таблице справа.

1 ответ1

2

Этот код VBA должен работать:

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

Откройте VBA/Macros с помощью ALT+F11, в ThisWorkbook добавьте новый модуль и вставьте этот код.

Выполните макрос, и если исходные данные находятся на Sheet1 то конечный результат будет на Sheet2 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .