Excel VBA - 部分文字列から始まる IF( と VLOOKUP( のループ

Excel VBA - 部分文字列から始まる IF( と VLOOKUP( のループ

素晴らしいコミュニティの皆様、良い一日をお過ごしください。

2 つの配列をループするマクロを開発しようとしています。データの設定例を次に示します。

生データはC4:C1500にあります

$ データはD4:D1500にあります

部分的な文字列値 (元々は Raw データから取得) は E4:E13 にあります。

生データが整理されるカテゴリはF4:F13にあります

以下は、概念実証として私がまとめた式です。

=IF(VLOOKUP(" * "&E4&" * ",$C$4:$C$1500,1,0)=ERROR.TYPE(#N/A),"リサーチ",VLOOKUP(" * "&E4&" * ",$E$4:$F$13,2,0))

これは一度に 1 行ずつ機能し、短いリストの一番下までしか機能しません (大規模なネストされたステートメントを記述する必要はありません)。私は、生データを介して Partial と Category の値をループし、Category と $ でデータを分析しようとしています。

例: シート1

列C (C4:C1500) 列D (D4:D1500) 列E(E4:E13) 列F(F4:F13)
3 生データ $ 部分データ カテゴリー
4 210324セールス.ボブパー.UT 785.54 ボブパー 販売
5 ABCDEF.210324.SalesHelenParr.TN 214.46 ヘレン・パー 販売
6 ダッシュパー.WY.RR.210324 238.56 ダッシュパー 研究
7 マネージメントNYジャックジャックパー210324 1,200.00 ジャックジャックパー 管理

シート2:

列B(B4:B13) 列C(C4:C13)
3 カテゴリー 合計$
4 販売 1,000.00
5 研究 238.56
6 管理 1,200.00

そこから、別の VLOOKUP( を実行して、Sheet2 で見つかった経費を SUM( します。

テスト式のクリーンアップに関するあらゆる提案を歓迎します。また、VBA に関するあらゆるサポートにも感謝します。

ありがとう。

リチャード VO

答え1

VBA を使用する必要性はわかりません。Excel 365 をお持ちの場合は、FILTER、CHOOSECOLS、SUM 関数を組み合わせて目的の結果を得ることができます。次の数式を調整します。

=SUM(CHOOSECOLS(FILTER(Sheet1!$C$2:$F$5,Sheet1!$F$2:$F$5=Sheet2!$B3),{2}))

数式を下に移動して他のセルを入力します。

関連情報