假设以下 Excel 工作表:
A B C
1 Item In progress Completed
2 FOO|01|442532342|fdsfdsfsd4 15 5
3 BAR|05|534527777|gfdsfdsfsd 10 5
4 BAR|9633|fdfssdfdsfdsf|5444 20 10
5 BAR|4543|fgfddsfds|34324325 5 0
6 FOO|efdfs|fdsfs|42321321323 5 5
7 BAZ|eree|34533432432|gfffdd 30 20
8 FOOBAR|fdfsdfs|432432|gdfgf 35 5
9 FOOBAR|sdfs534324324|43|223 0 0
(1) 我想扫描A
列并根据第一个管道 ( ) 之前的文本识别唯一项目|
。在这种情况下,这将是:
FOO
BAR
BAZ
FOOBAR
这个查找应该是动态的,所以如果第十个 Item 是BARBAZ|sdadadsd|34343324322
,那么返回应该是:
FOO
BAR
BAZ
FOOBAR
BARBAZ
(2) 我需要统计每个项目类型的B
和C
列。所以原始示例的总输出将是(为清楚起见,括号内的计算)
FOO 20 (15+5) 10 (5+5)
BAR 35 (10+20+5) 15 (5+10+0)
BAZ 30 (30) 20 (20)
FOOBAR 35 (35+0) 5 (5+0)
B
和列C
是硬编码的排序方式:不会有带有附加值的D
列,如果有,我可以手动更新公式。问题是我很难开始这样做。可以用公式完成还是需要VBA?
在@KazJaws 发表评论后,我决定尝试编写 VBA。我现在有这个,但我需要扩展。任何帮助将不胜感激:
Sub CreateStats()
Dim itemSplit
Dim item
itemSplit = Split(Columns(0).Value, "|")
item = itemSplit(1)
End Sub
但是,它会产生一个错误:“无法在中断模式下执行代码”