大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、取引先ごとに別シートを転記するには、「AutoFilter」で抽出して、「.Copy」を使って転記するとできます。取引先ごとに別シート転記する方法について、マスターしていきましょう。

はじめに

この記事では、取引先ごとに別シート転記する方法について、ご紹介します。

手順としては、

  • 取引先リストを作成してループ
  • オートフィルタを使って取引先でフィルタ
  • シートを追加して名前を変更
  • フィルタ結果を別シートに転記
  • オートフィルタを解除

という感じです。

では、取引先ごとに別シート転記する方法について、解説していきます。

本記事の内容を動画にてまとめています

VBAコードの作成手順について、動画で確認できます。

目次から見たい項目へ移動すると便利ですよ。

目次

取引先ごとに別シート転記したい

やりたい内容は、取引先ごとに別シート転記したいということになります。

やりたい内容

取引先ごとに、別シートに転記するVBAコードを作成していきます。

取引先ごとに、別シート転記したい

取引先ごとに、別シートに転記したいです

次のような感じで、取引先ごとに、別シートに転記したいです。

「A~C」の取引先ごとに転記したい

「A」の取引先を別シートに転記します。

「A」の取引先を別シートに転記します

「B」の取引先を別シートに転記します。

「B」の取引先を別シートに転記します

「C」の取引先を別シートに転記します。

「C」の取引先を別シートに転記します

といった感じで、取引先ごとに別シートに転記するVBAコードを作成していきます。

VBAコードを作成

では、段階的にVBAコードを作成していきます。

「A」の取引先のみを別シート転記

まずは、「A」の取引先のみを別シート転記するVBAコードを作成してみます。

VBAコードは、次のようになります。

Sub TEST1()
  
  '「A」でフィルタ
  Range("A1").AutoFilter 1, "A"
  'シートを追加
  Sheets.Add after:=Sheets(Sheets.Count)
  ActiveSheet.Name = "A" 'シート名を変更
  'フィルタ結果を転記
  Sheets("Sheet1").Range("A1").CurrentRegion.Copy Range("A1")
  Sheets("Sheet1").Range("A1").AutoFilter 'フィルタ解除
  
End Sub

では、ポイントごとに実行してみます。

「A」の取引先を別シート転記

実行すると、「A」でフィルタされます。

「A」でフィルタします

シートを追加します。

シートを追加します

シート名を変更します。

シート名を変更します

フィルタ結果をコピーします。

フィルタ結果をコピーします

オートフィルタを解除します。

オートフィルタを解除します

これで、「A」の取引先を別シートにできます。

「A」の取引先を別シートに転記できた

「A」の取引先を別シートにできました

「A」の取引先を別シートにできました。

「A~C」の取引先を別シート転記

次は、「A~C」の取引先を別シート転記するしてみます。

3つの取引先を、別シートに転記するVBAコードになります。

Sub TEST2()
  
  Dim A
  '取引先リストを作成
  A = Array("A", "B", "C")
  
  For i = 0 To UBound(A)
    '取引先リストでフィルタ
    Sheets("Sheet1").Range("A1").AutoFilter 1, A(i)
    'シートを追加
    Sheets.Add after:=Sheets(Sheets.Count)
    ActiveSheet.Name = A(i) 'シート名変更
    'フィルタ結果を転記
    Sheets("Sheet1").Range("A1").CurrentRegion.Copy Range("A1")
    Sheets("Sheet1").Range("A1").AutoFilter 'フィルタ解除
  Next
  
End Sub

では、VBAコードを実行してみます。

取引先ごとに別シート転記する

「A」の取引先を別シートに転記できます。

「A」の取引先を別シートに転記できます

さらに実行して、「B」の取引先を別シートに転記できます。

「B」の取引先を別シートに転記できます

最後に、「C」の取引先を別シートに転記できます。

「C」の取引先を別シートに転記できます

こんな感じで、3つの取引さきを、別シートに転記できます。

取引先リストを作成して、取引先ごとに別シート転記

次は、「取引先リスト:を作成して、取引先ごとに別シート転記してみます。

取引先リストを自動で作成て、作成した取引先リストを塚ttえ、転記するという感じです。

Sub TEST3()
  
  Dim B
  '辞書を作成
  Set B = CreateObject("Scripting.Dictionary")
  
  Dim C
  '元データの取引先を取得
  With Sheets("Sheet1")
    C = .Range("A2:C" & .Cells(Rows.Count, "A").End(xlUp).Row)
  End With
  
  '取引先リストを作成
  For i = 1 To UBound(C)
    If B.exists(C(i, 1)) = False Then
      B.Add C(i, 1), 0
    End If
  Next
  
  Dim A
  A = B.keys '取引先リストを配列に格納
  
  For i = 0 To UBound(A)
    '取引先でフィルタ
    Sheets("Sheet1").Range("A1").AutoFilter 1, A(i)
    'シートを追加
    Sheets.Add after:=Sheets(Sheets.Count)
    ActiveSheet.Name = A(i) 'シート名を変更
    'フィルタ結果を転記
    Sheets("Sheet1").Range("A1").CurrentRegion.Copy Range("A1")
    Sheets("Sheet1").Range("A1").AutoFilter 'フィルタ解除
  Next
  
End Sub

では、実行してみます。

取引先リスト作成して、別シート転記

実行するとまず、取引先リストを作成できます。

取引先リストを作成できます

そして、作成した取引先リストを使って、「A~C」の取引先を転記できます。

「A~C」の取引先を転記できます

「A~C」の取引先を転記できました。

取引先リストを自動で作成できれば、データが増えたとしても、同じVBAコードで別シートに転記することができます。

データを追加してみる

データを追加してみます。

データを追加してみます

追加した取引先を、別シートに転記できます。

追加した取引先を、別シートに転記できました

追加した取引先を、別シートに転記できました。

取引先リストを作成して、別シート転記すると便利です。

おわりに

この記事では、取引先ごとに別シート転記する方法について、ご紹介しました。

手順としては、

  • 取引先リストを作成してループ
  • オートフィルタを使って取引先でフィルタ
  • シートを追加して名前を変更
  • フィルタ結果を別シートに転記
  • オートフィルタを解除

という感じです。

実務では、条件別に別シートに転記したい、という場面があるかと思います。

条件別に別シートに転記する方法について、マスターしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す