質問: 検索&自動計算 いつも回答いただきありがとうございます。 sheet1からsheet2に転記する際に sheet1の1行目からひとつづつ転記するようにマクロを組んでいます。(nextを使って) sheet2に転記される際に重複する値があれば、数値を加算されるようにしたいのですが どなたかご教授の方宜しくお願い致します。 (sheet1) a b 1 りんご 2 2 みかん 4 3 りんご 3 4 . . ↓ (sheet2) a b 1 りんご 5 2 みかん 4 3 4 . .
回答: なぜvbaを使うのか。vbaの勉強をしたいのか。 ーー 関数でも出来るよ。 sheet2にsheet1のa列の重複しないものを作り出す(フィルタオプションに設定ー「重複するレコードは無視する」を使う)。 例データ xx a 1 b 2 c 3 a 4 b 5 d 1 f 2 a 3 c 4 sheet2で(sheet1で操作しないこと) データーフィルターフィルタオプションの設定 指定した範囲on リスト範囲 sheet1!$a$1:$a$10 検索条件範囲 空白のまま 抽出範囲 d1:d10 <-sheet2ということ 重複するレコードは無視する on ok 結果 d列 xx a b c d f e列に e2に =sumif(sheet1!$a$2:$a$10,d2,sheet1!$b$2:$b$10) 下方向に式を複写 結果 xx a 8 b 7 c 7 d 1 f 2 ーー これをvbaでもやれるが、 ーー 重複するレコードを無しにした1セットをsheet2にでも用意したほうがvbaロジックや関数が簡単。 ーー ほかにvbaなら sheet1をa列でソートして、前の行のa列の値を保持する変数を設けて、a列で各行について、前の行と同じなら変数係数を足しこむ。 変わったらその変数の値を書き出して、(その場合a列のデータも同時に書き出す) 変数には今の行の数をセットする。 これを最終行まで繰返す。 こういうロジック(ソート法)が能率的とおもう。 毎行で同じ行を捜していたら混乱するだろう。 ーー (1)シートが2つ現れるがその扱い方のコード (2)最終行の行数をとらえるコード など判ってないとならない。大丈夫か。これさえ判ってないようだとvbaは勉強が足りない。 それにvbaはロジックというものを経験で会得することが肝心。vb文法の勉強だけではプログラムは組めない。