[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『コードをすっきりと』(minoru)
いつもお世話になります。
同一のブック内で、基シートの3列目をキーとして都道府県別のシートに、以下のコードで転記しています。 ※愛知と岐阜の例を記載しましたが三重、福井、石川・・・と沖縄まで、同じコードで続きます。
基シートの3列目を転記先のシート名として、すっきりしたコードに変更したいのですが、よくわかりませんので校正していただきたいと思い質問しました。よろしくお願いします。
Sub 転記()
Dim ws As Worksheet Dim i As Long Dim j As Long Set ws = Worksheets("基")
Worksheets("愛知").Select j = 1 For i = 1 To ws.Cells(Rows.Count, 3).End(xlUp).Row If ws.Cells(i, 3) = "愛知" And ws.Cells(i, 4) <> "0" Then j = j + 1 Cells(j, 1).Value = ws.Cells(i, 4).Value Cells(j, 3).Value = ws.Cells(i, 5).Value Cells(j, 5).Value = ws.Cells(i, 7).Value End If Next
Worksheets("岐阜").Select j = 1 For i = 1 To ws.Cells(Rows.Count, 3).End(xlUp).Row If ws.Cells(i, 3) = "岐阜" And ws.Cells(i, 4) <> "0" Then j = j + 1 Cells(j, 1).Value = ws.Cells(i, 4).Value Cells(j, 3).Value = ws.Cells(i, 5).Value Cells(j, 5).Value = ws.Cells(i, 7).Value End If Next
End Sub
< 使用 Excel:Excel2019、使用 OS:unknown >
こんにちわ〜^^ ちょい見なので、外していましたらお許しを。。。^^; 一都一道二府、43県のシートで、D列がゼロでなければ という条件が共通なら。ループの中にwithステートメント で処理対象シートを指定してあげれば、良いのではないでせうか。 もし、そうならループは一回で、済むかと。。。思いますです。 (隠居Z) 2021/09/26(日) 13:53
↑ 47回廻しを 一つ。。。という意味です。。。(#^ ^#)... m(_ _)m (隠居Z) 2021/09/26(日) 13:57
Dim ws As Worksheet Dim i As Long, LastRow As Long
Set ws = Worksheets("基") For i = 1 To ws.Cells(Rows.Count, 3).End(xlUp).Row If ws.Cells(i, 4) <> "0" Then With Worksheets(ws.Cells(i, 3).Value) LastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1 .Cells(LastRow, 1).Value = ws.Cells(i, 4).Value .Cells(LastRow, 3).Value = ws.Cells(i, 5).Value .Cells(LastRow, 5).Value = ws.Cells(i, 7).Value End With End If Next End Sub
(ピンク) 2021/09/26(日) 14:02
のん 様
コピペ先のシート取得(選択)方法がイマイチ理解できていませんでしたので質問させていただきました。
ピンク 様
参考コードありがとうございます。
For i = 1 を For i = 2 に変更したところ希望通りの結果で転記できました。
.Valueでシート名が取得できることが理解できました。
皆様、ご返答ありがとうございました。
(minoru) 2021/09/26(日) 19:21
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.