EXCEL表中,分別有訂單編號、訂購日期、產品名稱、單價、數量、小計等欄位,
想瞭解下表中 同一產品名稱 ,其銷售一共多少錢?
A B C D E F
訂單編號 訂購日期 產品名稱 單價 數量 小計
A0001 112/5/1 鉛筆 20 6 120
A0002 112/6/6 原子筆 30 2 60
A0003 112/7/7 剪刀 46 2 92
A0004 112/6/8 美工刀 40 2 80
A0005 112/8/9 鉛筆 20 4 80
A0006 112/6/10 橡皮擦 15 2 30
A0007 112/9/9 精美提袋 80 3 240
A0008 112/9/12 原子筆 30 4 120
A0009 112/10/13 剪刀 46 2 92
A0010 112/11/15 鉛筆 20 2 40
藉由AI(ChatGPT)協助將同一產品名稱,歸納成同一群組後,彙總成單筆銷售數量。
PROMPT提示訊息下法:
EXCEL表中,有訂單編號、訂購日期、產品名稱、單價、數量、小計欄,請以EXCEL VBA程式,將相同 產品名稱 進行排序,歸納為同一群組,並將 相同產品名稱 彙集成1筆 單價及數量,
結果分別存放至 I2欄為產品名稱 J2欄為單價 K2欄為相同品項數量加總
Sub 彙集產品資料()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim productName As String
Dim price As Double
Dim quantity As Long
Dim summaryRow As Long
' 設定工作表,這裡假設資料在第一個工作表
Set ws = ThisWorkbook.Sheets(1)
' 找到最後一行
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' 初始化目標列
summaryRow = 2 ' 假設第一行是標題,從第二行開始
' 按照產品名稱進行排序
ws.Sort.SortFields.Clear
ws.Sort.SortFields.Add Key:=ws.Range("C2:C" & lastRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ws.Sort
.SetRange ws.Range("A1:F" & lastRow)
.Header = xlYes ' 假設有標題行
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
' 循環處理每一行資料
For i = 2 To lastRow ' 假設第一行是標題,從第二行開始
' 取得產品名稱
productName = ws.Cells(i, 3).Value ' 假設產品名稱在第3欄
' 取得單價和數量
price = ws.Cells(i, 4).Value ' 假設單價在第4欄
quantity = ws.Cells(i, 5).Value ' 假設數量在第5欄
' 如果是相同的產品名稱,則彙集數據
If productName = ws.Cells(summaryRow, 9).Value Then
' 加總數量
ws.Cells(summaryRow, 11).Value = ws.Cells(summaryRow, 11).Value + quantity
Else
' 新的產品,將結果寫入新的一行
summaryRow = summaryRow + 1
ws.Cells(summaryRow, 9).Value = productName ' 產品名稱
ws.Cells(summaryRow, 10).Value = price ' 單價
ws.Cells(summaryRow, 11).Value = quantity ' 數量
End If
Next i
End Sub
請按照以下步驟使用此程式:
STEP1:開啟您的Excel檔案。
STEP2:按下Alt + F11進入VBA編輯器。
STEP3:在VBA編輯器中,插入一個新的模組Module。
STEP4:將上述VBA程式碼,複製並貼上到新的模組Module中。
STEP5:在VBA編輯器中,按下F5運行程式。