質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

1回答

718閲覧

For文の入れ子(ネスト)構造について

kingkamehameha

総合スコア16

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

2クリップ

投稿2020/02/20 01:56

###for文の中にforをいれてそこが完結したら、次へ行きたい

お世話になります。
Zが元の参照したいExcelファイルで、Tがもう一方のcsvファイルです。
1行目の値→数の分だけTを回す。
2行名の値→数の分だけTを回す。

としたいのですが、毎回Next Zまで回ってしまいます。
If文の中にNext Zを入れるとコンパイルエラーになってしまいます。

VBA

1For Z = 1 To Worksheets("Sheet1").Cells(Rows.count, "A").End(xlUp).Row '送信者リストの行数 2 3 For T = 2 To csv.Worksheets(SheetName).Cells(Z, Columns.count).End(xlToLeft).Column 'DBリストの横の列数 4 On Error Resume Next 5 6 Mail = WorksheetFunction.VLookup(Wb.Worksheets("Sheet1").Cells(Z, "A"), csv.Worksheets(SheetName).Cells(), T, False) 7 8 On Error GoTo 0 'リストからHITしない場合ERRORを出さない 9 10 If Mail <> "" Then 'HITした場合 11 12 If Wb.Worksheets("Sheet1").Cells(Z, "B").Value = "" Then 'B列が空白の場合 13 14 Wb.Worksheets("Sheet1").Cells(Z, "B").Value = Mail 15 16 Else 17 18 Wb.Worksheets("Sheet1").Cells(Z, "B").Value = Wb.Worksheets("Sheet1").Cells(Z, "B").Value & "," & Mail 19 20 End If 21 22 Else 'HITしなかった場合 23 24 T = 2 25 26 End If 27 28 Next T 29 30Next Z

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

毎回Next Zまで回ってしまいます。

1行目が終わった。
次の行
次の行

と続かなければいけないので、
毎回Nextが実行されなければいけないのでは?

っていうか、処理がすごい時間かかるでしょう?

列毎に毎回Vlookup関数を実行したら、すごい時間が掛かると思われます。
Match関数で行の位置を取得して変数においておけば、
関数を使わずともセルの参照はできますよね?
最近同様の質問を見かけました。

https://www.moug.net/faq/viewtopic.php?t=79135&sid=d819ad08010e99f6562eaeaea01aac00

こちらを参考にされてみてはいかがでしょう?
(一人相撲を取って解決にされましたが。。。。^^;もっとちゃんとしたコードを教えたかった><)
登録しないと読めないんでしたっけ?

あと、この辺も参考に。

[ExcelのVLOOKUP関数をVBAで高速に処理する方法
Excel VBAでVLookup風な処理を高速かつ柔軟に動作させる方法](https://qiita.com/furano_kumarin/items/bd34799eb1ec0fb84cbe)
VLOOKUP関数が400倍速くなった

投稿2020/02/20 03:33

mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問