次の 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
A
(1)列をスキャンし、最初のパイプ ( ) の前のテキストに基づいて固有のアイテムを識別したいと考えています|
。この場合、これは次のようになります。
FOO
BAR
BAZ
FOOBAR
このルックアップは動的である必要があるため、10 番目のアイテムが であるBARBAZ|sdadadsd|34343324322
場合、戻り値は次のようになります。
FOO
BAR
BAZ
FOOBAR
BARBAZ
(2) Item タイプごとに列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
ただし、「ブレーク モードでコードを実行できません」というエラーが生成されます。