[[20210926123900]] 『コードをすっきりと』(minoru) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『コードをすっきりと』(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

参考に
Sub 転記2()
    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


そもそも根本的な処理方針に無駄が多いので、スッキリさせたいなら基シートにソートをかけてコピペのほうが分かりやすいかと。
(のん) 2021/09/26(日) 14:09

隠居Z 様
その通りなのですが、基シートの3列目がランダムで、転記先の指定方法取得で失敗が続きまして質問させていただきました。

のん 様
コピペ先のシート取得(選択)方法がイマイチ理解できていませんでしたので質問させていただきました。

ピンク 様
参考コードありがとうございます。
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.