質問: エクセル 特定の文字がある複数の行に関数を入力したい vbaについて教えてください。 a列に”wh”という文字が含まれていたら、 i列に”=vlookup(a5,[材料使用予定表マクロ.xlsm]フタミ箱集計!$e$3:$o$200,6,false)” という関数を入力したいです。 [材料使用予定表マクロ.xlsm]フタミ箱集計は入力したいブックとは別のブックです。 a列に”wh”は複数あります。 全データは2000行あります。 ど素人が調べてやってみても時間が過ぎるばかりでした・・・ お力を貸してくださいm(__)m
回答: 此のままでは 動かないので、 あくまで ヒントですが、 こんな感じで。 option explicit const 検索対象 as string = "wh" const i列 as long = 9 sub テスト() evaluate(" offset($a$1, small( index (($a:$a=検索対象)*row($a:$a) +($a:$a<>検索対象)*999999999999999 ,,) ,row( offset($a$1,0,0, sumproduct((($a:$a=検索対象)+0) ,1) ) )-1 ,i列-1 ,1 ,1 ) ").formula = ”=vlookup(a5,[材料使用予定表マクロ.xlsm]フタミ箱集計!$e$3:$o$200,6,false)” end sub セルアドレッシングを、 .range(○,×).address とかに 変え、 offset構文では なく、 rangeで、 多領域扱いで アドレッシングして、 variantか、rangeで、 受け取って、 .formula= と すれば、 良いかな? loop等、場合により、 vbaには 不要ですよね。 でも、 evaluate構文値の 受け取り、 難しいのだよね。 まぁ、頑張ってみてくださいよ、 恐らく こういった物が、 最速クラスの 処理記載法ですから。