[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『SUMPRODUCT関数』(まつ)
VBAを使って 抽出用シートAG8〜列固定で行を一行ずつずらしたいのですが ExcelですとSUMPRODUCT(((NEW!$E$2:NEW!$E$507=$J8)*((NEW!$D$2:NEW!$D$507=$G8)*…………として下にコピーで抽出できますが VBAではどうすればよいのでしょうか?
『NEW』のシートから抽出結果
AG AH 6 あ い 7 コード 価 8 37 3,100 9 6 74,600 10 21 6,100 11 111 882,700
Sub aaa() Dim i, last As Integer i = 8 last = Range("AG65530").End(xlUp).Row - 1 For i = 8 To last Range("AG" & i).Value = Evaluate("SUMPRODUCT(((NEW!$E$2:NEW!$E$507=$J8)*((NEW!$D$2:NEW!$D$507=$G8)*((NEW!$U$2:NEW!$U$507=$AG$6)*((NEW!$R$2:NEW!$R$507))))))") Next i
End Sub
その式が何をしているのかわかりませんし 1行づつずらすというのも意味がわかりません。
最終的にやりたい事を言葉や表を使って説明できますか?
(momo)
申し訳ありません。説明がします。 『NEW』というシートにデータがあり 抽出したいシート『抽出』のAG列8行目に この部分 ↓ SUMPRODUCT関数で式はSUMPRODUCT(((NEW!$E$2:NEW!$E$507=$J8)*((NEW!$D$2:NEW! この部分 ↓ $D$507=$G8)*((NEW!$U$2:NEW!$U$507=$AG$6)*((NEW!$R$2:NEW!$R$507))))))")と入れてデータを抽出させています。 エクセルではこの式でAG列の8行目以降を右クリックで関数を入れたい行(AG列69行目)までコピーすると列固定で行が (上記式のこの部分↓の部分が$J8→$J8 $J9→$J9 .... $J69と)1行ずつずれて下記の表のような抽出結果となります。
抽出結果
A(列)・・・・ AG(列) AH 1(行) . 6(行) あ い 7 コード 価 8 37 3,100 9 6 74,600 10 21 6,100 11 111 882,700
これをマクロではどう書けばよいのかが解らず困っています。 よろしくお願いします。
Sub aaa() Dim i, last As Integer i = 8 last = Range("AG65530").End(xlUp).Row - 1 For i = 8 To last Range("AG" & i).Value = Evaluate("SUMPRODUCT(((NEW!$E$2:NEW!$E$507=$J8)*((NEW!$D$2:NEW!$D$507=$G8)*((NEW!$U$2:NEW!$U$507=$AG$6)*((NEW!$R$2:NEW!$R$507))))))") Next i
End Sub (まつ)
1.単に数式を入れたいのでしたらマクロの記録を取れば出来ます。
2.Evaluateの結果を値としてセルに入れたいのでしたらEvaluateの中の数式の文字列を変数iで可変にします。
3.そもそもVBAなので計算式を使わずに処理したいのでしたら処理のロジックを教えてください。
さて、どれでしょうか・・・? (momo)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.