VBAマクロを自動作成する無料アプリ

VBAコードの知識不要😊ChatGPTで機能を追加

MENU

【ノーコード】複数シートから、同一セルの値を抽出し、一覧表に転記する(預り金残高一覧)

エクセルVBAマクロを自動作成する無料アプリです。

例として「複数シートから、同一セルの値を抽出し、預り金残高一覧表に転記する」VBAマクロを作成します。

事例 預り金残高一覧を作成

マクロを実行すると、原本を除いたすべてのシートデータが転記されました。

アプリの設定

アプリのトップページ

 ⇒▼転記・上書き・新規追加・比較

 ⇒転記

 ⇒【ツール】複数シートから、同一セルの値を抽出し、一覧表にする

 

【ポイント】

(除外シートを除いた)1枚目のシートの転記セルの値が左から順番に値を貼り付ける左上セルの右方向に転記します。
なお、シート名を貼り付けるに☑すると、まずシート名が貼り付けられ、そのあと転記セルの値を転記します。

■ 一つ目のシートが終わると、次のシートを順次処理します。

表示されるVBAコード 

アプリで作成されたコードを、VBE画面に貼り付ければ、マクロの完成です。

 

VBAコードを見る

Sub 月末残高転記() '複数シートから、同一セルの値を抽出し、一覧表にする
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止
'◆処理前のデータを削除する
Worksheets("総括表").Select
If Range("a2") <> "" Then
    Range("a2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.ClearContents
    Selection.ClearHyperlinks
    Selection.Font.Underline = False
    Selection.Font.ColorIndex = xlAutomatic
End If
'◆シートごとに処理をする
Dim シート As Worksheet, アドレス As Variant, 配列2次元(), 行 As Long
Dim 除外辞書 As Object, 対象辞書 As Object, 配列 As Variant
Dim 除外配列 As Variant, 対象配列 As Variant, 数 As Long, i As Long
Set 除外辞書 = CreateObject("Scripting.Dictionary")
Set 対象辞書 = CreateObject("Scripting.Dictionary")
'除外配列に、除外対象を代入
配列 = Split("原本,総括表", ",")
除外配列 = 配列
For 数 = 0 To UBound(除外配列)
   除外辞書.Add 除外配列(数), "除外"
Next 数
'シート名が除外辞書になければ、対象辞書に加える
For Each シート In Worksheets
   If Not 除外辞書.Exists(シート.Name) Then
       対象辞書.Add シート.Name, "対象"
   End If
Next シート
'対象のキーを、配列に入れる
対象配列 = 対象辞書.keys
'配列に入れた対象に、順次処理をする
For Each シート In Worksheets(対象配列)
  '◆シート一覧作成
  columns("a").NumberFormat = "@"
  Range("a" & 2 + i) = シート.Name
  ActiveSheet.Hyperlinks.Add Anchor:=Range("a" & 2 + i), _
  Address:="", _
  SubAddress:=シート.Name & "!A1", _
  TextToDisplay:=シート.Name
  i = i + 1
  '◆対象セルの値で、リストを作る
  Dim 列 As Long, セル As Variant
  行 = 行 + 1
  アドレス = Split("a2,e11", ",")
  '2次元側に「行」をいれて、要素数を変更
  ReDim Preserve 配列2次元(1 To UBound(アドレス) + 1, 1 To 行)
  For Each セル In アドレス
    列 = 列 + 1
    配列2次元(列, 行) = シート.Range(セル).Value
  Next セル
  列 = 0
    '串刺し計算をする
    Dim 串刺 As String
    If 串刺 = "" Then
     串刺 = シート.Name & "!E11"
    Else
     串刺 = 串刺 & "," & シート.Name & "!E11"
    End If
Next
'◆2次元の行列を入れ替えて、貼り付け
Sheets("総括表").Range("a2").Offset(0, 1).Resize(行, UBound(アドレス) + 1) = Application.Transpose(配列2次元)

'串刺しを貼り付け
Sheets("総括表").Range("C8").Formula = "=SUM(" & 串刺 & ")"
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub

 

逆の処理です。

ChatGPTで修正

あなたが自動化したい内容と事例が少し異なる場合は、無料で使えるマイクロソフトの「BingAIチャット」でコードを修正します。とても簡単です!

アプリはこちらから↓↓↓↓