0

次の 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

ただし、「ブレーク モードでコードを実行できません」というエラーが生成されます。

4

1 に答える 1

1

テキストを列に使用して、列 A を「|」で分割します。次に、ここにあるリスト式から個別のリストを抽出します。

次に、SUMIFS()合計範囲が [進行中] 列、基準範囲が [アイテム] 列、基準が作成した個別リストの最初のアイテムである数式を使用します。次に、Completed 値用に別の列を追加します。

Cell H3 =INDEX($B$3:$B$10,MATCH(0,INDEX(COUNTIF($H$2:H2,$B$3:$B$10),0,0),0))`
Cell I3 =SUMIFS($F$3:$F$10,$B$3:$B$10,H3)
Cell J3 =SUMIFS($G$3:$G$10,$B$3:$B$10,H3)

このように見えるはずです。 ここに画像の説明を入力

于 2013-07-16T11:55:05.810 に答える