我有一个包含以下数据的 excel 文件
名称 | 售出商品 | 售价 ===================================== 杰夫 | 红笔 | L5 六月 | 蓝色笔 | L6 jane | 绿色笔 | L5 杰夫 | 蓝色笔 | L5 六月 | 绿色笔 | L7 jane | 红笔 | L5
变成这样:
| 红笔 | 蓝笔 | 绿笔 ========================================== 杰夫 | L5 | L5 | - 六月 | - | L6 | L7 简 | L5 | - | L5
“L”后面跟着的数字表示售价范围。(例如 L5 的价格可以是 0.4 美元到 0.5 美元)
我可以知道如何去做吗?因为我尝试了数据透视表,但没有得到我想要的结果。
数据透视表不起作用的原因是:
当我插入数据透视表时,我选择名称作为“行标签”,销售商品作为“列标签”,销售价格作为“值”,Excel 将给我销售价格计数作为“值”。我无法将其作为普通的纯值,只能作为我想要的表格。
以下是数据透视表提供的内容:
行标签 | 蓝色笔 | 绿色笔 | 红色笔 | 总计 ================================================================== 六月 | 1 | 1 | | 2 简 | | 1 | 1 | 2 杰夫 | 1 | | 1 | 2 ================================================================== 总计 | 2 | 2 | 2 | 6
答案1
这个 VBa 应该可以做到(或者至少可以让你入门)
Option Explicit
Sub myShaefferPenNibBroke()
'first, let's set up the headings on worksheet 2 and clear it all
Worksheets("Sheet2").Cells.Clear
Worksheets("Sheet2").Range("B1").Value = "red pen"
Worksheets("Sheet2").Range("C1").Value = "blue pen"
Worksheets("Sheet2").Range("D1").Value = "green pen"
Dim row As Integer
row = 2
Do While (Worksheets("Sheet1").Range("A" & row).Value <> "")
Dim name As String
name = Worksheets("Sheet1").Range("A" & row).Value
Dim pen As String
pen = Worksheets("Sheet1").Range("B" & row).Value
Dim price As String
price = Worksheets("Sheet1").Range("C" & row).Value
Call UpdateOtherSheet(name, pen, price)
row = row + 1
Loop
End Sub
Sub UpdateOtherSheet(name As String, pen As String, price As String)
Dim row As Integer
row = 2
Dim doesExist As Boolean
doesExist = False
Do While (Worksheets("Sheet2").Range("A" & row).Value <> "")
Dim resultName As String
resultName = Worksheets("Sheet2").Range("A" & row).Value
If (name = resultName) Then
Call AddPrice(row, pen, price)
doesExist = True
End If
row = row + 1
Loop
If Not doesExist Then
row = 2
Do While (Worksheets("Sheet2").Range("A" & row).Value <> "")
row = row + 1
Loop
Worksheets("Sheet2").Range("A" & row).Value = name
Call AddPrice(row, pen, price)
End If
End Sub
Sub AddPrice(row As Integer, pen As String, price As String)
Select Case pen
Case "red pen"
Worksheets("Sheet2").Range("B" & row).Value = price
Case "blue pen"
Worksheets("Sheet2").Range("C" & row).Value = price
Case "green pen"
Worksheets("Sheet2").Range("D" & row).Value = price
End Select
End Sub
它读取工作表1上的原始表格并将其全部转换为工作表2上的表格
工作表 1
在我运行 vba 之后,Worksheet2