Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


571 / 13645 ツリー ←次へ | 前へ→

【79628】関数を使用して他BOOKからの最終行の取得の仕方 nao 18/2/21(水) 12:01 質問[未読]
【79631】Re:関数を使用して他BOOKからの最終行の取... Jaka 18/2/21(水) 21:57 発言[未読]
【79632】あっ! Jaka 18/2/21(水) 22:18 発言[未読]
【79634】ああ、まただ。 Jaka 18/2/21(水) 22:59 発言[未読]
【79636】Re:ああ、まただ。 nao 18/2/22(木) 9:42 お礼[未読]

【79628】関数を使用して他BOOKからの最終行の取得...
質問  nao  - 18/2/21(水) 12:01 -

引用なし
パスワード
   説明が難しいんですが、アクティブBookに対して他Bookからのデータを関数で取得してます。その際にSUMIFSを使用してるんですが、列全部で指定してしまうと時間がかかってしまうためRowsで最終行を取得して関数を入れるやり方がわかりません。

Dim WBK As Variant
  Dim i As Long
  Set WBK = ThisWorkbook
  WBK.Activate

  For i = 3 To 12

   Worksheets(i).Select
  Range("E6:P21").Formula = "=SUMIFS([★DATA.xlsx]ローデータ!$AG$3:$AG$999999,[★DATA.xlsx]ローデータ!$AH$3:$AH$999999,E$4,[★DATA.xlsx]ローデータ!$C$3:$C$999999,$D6,[★DATA.xlsx]ローデータ!$AK$3:$AK$999999,$B$4)"

Formulaを使用しているのがいけないのか、上記のようなことを4度ほど繰り返すので他にいい方法がないものかと試行錯誤しております。

Dim r As Long
  Set WBK = ThisWorkbook
  Set WB = Workbooks("★DATA.xlsx")
  r = WB.Worksheets("ローデータ").Range("B2").End(xlDown).Row
と、最終行は取得できるものの関数の書き方がうまくいきません。
ご教示いただけませんでしょうか。
宜しくお願いします!

【79631】Re:関数を使用して他BOOKからの最終行の...
発言  Jaka  - 18/2/21(水) 21:57 -

引用なし
パスワード
   文字列の連結ってできますか?

数式をマクロで書き込む時も、結局文字列なんですよ。

"=SUMIFS([★DATA.xlsx]ローデータ!$AG$3:$AG$999999,[★DATA.xlsx]ローデータ!$AH$3:$AH$999999,E$4,[★DATA.xlsx]ローデータ!$C$3:$C$999999,$D6,[★DATA.xlsx]ローデータ!$AK$3:$AK$999999,$B$4)"

だから、

=SUMIFS([★DATA.xlsx]ローデータ!$AG$3:$AG$
必要な、この部分と取得した最終行を連結してやればいいんです。

数式の文字 = "=SUMIFS([★DATA.xlsx]ローデータ!$AG$3:$AG$" & r & _
       ",[★DATA.xlsx]ローデータ!$AH$3:$AH$" & r & _
       ",E$4,[★DATA.xlsx]ローデータ!$C$3:$C$" & y & _
       ",$D6,[★DATA.xlsx]ローデータ!$AK$3:$AK$" & r & ",$B$4)"


Formulaでの相対参照って言うのかな、の変化がどう変わるのか忘れた上未確認だけど。
(2007になってからほとんど触って無いので、っていうかあまり触りたくないって気分。)

因みに
★DATA.xlsx の文字を変数に入れておくと

星ブック名 = "★DATA.xlsx"
Set WB = Workbooks(星ブック名)

で済むし

数式の文字 = "=SUMIFS([" & 星ブック名 & "]ローデータ!$AG$3:$AG$" & r & _
       ",[" & 星ブック名 & "]ローデータ!$AH$3:$AH$" & r & _
       ",E$4,[" & 星ブック名 & "]ローデータ!$C$3:$C$" & y & _
       ",$D6,[" & 星ブック名 & "]ローデータ!$AK$3:$AK$" & r & ",$B$4)"

なんか余計に解りづらくなった気がするけど、ブック名「★DATA.xlsx」が変わった時に、

星ブック名 = "新★DATA.xlsx"

と、変数に入れる値だけ変えれば済むという利点があります。

【79632】あっ!
発言  Jaka  - 18/2/21(水) 22:18 -

引用なし
パスワード
   すみません。、

これと、",E$4,[★DATA.xlsx]ローデータ!$C$3:$C$" & y & _
これの、",E$4,[★DATA.xlsx]ローデータ!$C$3:$C$" & y & _
                         ↑
y は、打ち間違いしてます。
r に変えてください。

下手に削除すると、空白のファイルができて、前みたいに繋がらなくなるかもしれないので。

【79634】ああ、まただ。
発言  Jaka  - 18/2/21(水) 22:59 -

引用なし
パスワード
   >これと、",E$4,[★DATA.xlsx]ローデータ!$C$3:$C$" & y & _
>これの、",E$4,[★DATA.xlsx]ローデータ!$C$3:$C$" & y & _

  ↓
                         ↓
これと、",E$4,[★DATA.xlsx]ローデータ!$C$3:$C$" & y & _
これの、",E$4,[" & 星ブック名 & "]ローデータ!$C$3:$C$" & y & _
                             ↑

【79636】Re:ああ、まただ。
お礼  nao  - 18/2/22(木) 9:42 -

引用なし
パスワード
   ▼Jaka さん:
おはようございます。
ありがとうございます。
無事に解決できました!"&r&"でいれてあげればよいんですね!
その辺がうまく出来ずに悩んでおりました。
ありがとうございます!                      ↑

571 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free