【新発想】ノーコードでExcelを自動化する方法

VBAマクロ作成アプリ NoCodeVBA

MENU

カレンダー形式のデータを、リスト形式にする

無料アプリで、すぐにエクセルVBAマクロを作成できます。

例として、「カレンダー形式のデータを、リスト形式にする 」VBAマクロを作成します。

(ページの末尾に、VBAコード掲載)

事例

カレンダー形式の、左上の値(赤枠の部分)を基準に、データをリスト化します。

右側のリストに、カレンダーのデータを転記しました。(^^)/

アプリの設定

アプリの設定です。

アプリのトップページ 

⇒▼表形式の変換

⇒リスト形式へ

⇒【ツール】カレンダー形式のデータを、リスト形式にする

【ポイント】

■ カレンダーとリストの書式(日にち、時間)は、事前に揃えます。

 

■ 「カレンダーの日にちの部分」とは、下記の赤枠の部分です。

なお、下の表示されるコードの「塊」も、下記の赤枠部分です。

 

■ カレンダーの、見出し行の、左上以外」とは、下記の赤枠の部分です。

 

表示されるVBAコード 

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

Sub デモ_88() 'カレンダー形式のデータを、リスト形式にする 
Application.ScreenUpdating = False ' 画面描画を停止
Application.DisplayAlerts = False  ' 警告表示を停止

Dim リスト As Variant, 塊 As Long, 対象行 As Long, 対象列 As Long, 行 As Long
'◆リストの空の配列を作成
ReDim リスト(1 To (5 - 1) * (8 / 4) * (10 / 5), 1 To 4 + 1)
'◆各塊の右上セルの取得を繰り返す
塊 = 0
行 = 1
For 対象行 = 0 To 10 - 1 Step 5
    For 対象列 = 0 To 8 - 1 Step 4
        Call リスト形式にする(リスト, 塊, 対象行, 対象列, 行)
        塊 = 塊 + 1
    Next 対象列
Next 対象行
'◆リストを出力
Worksheets("Sheet1").Select
Range("j2").Resize((5 - 1) * (8 / 4) * (10 / 5), 4 + 1) = リスト
Application.DisplayAlerts = True   ' 警告表示を再開
Application.ScreenUpdating = True  ' 画面描画を再開
End Sub

 

Sub リスト形式にする(リスト As Variant, 塊 As Long, 対象行 As Long, 対象列 As Long, 行 As Long)
Dim 配列 As Variant, 縦 As Long, 横 As Long
'◆塊を2次元配列に格納
配列 = Worksheets("Sheet1").Range("a1").Offset(対象行, 対象列).Resize(5, 4).Value
'◆配列をリストに格納
For 縦 = 1 To 5 - 1
    For 横 = 1 To 4
         If 配列(縦 + 1, 横) <> "" Then GoTo 書き込み
    Next 横
    GoTo 書き込みなし
書き込み:
    For 横 = 1 To 4
        リスト(行, 1) = 配列(1, 1)
        リスト(行, 1 + 横) = 配列(縦 + 1, 横)
    Next 横
    行 = 行 + 1
書き込みなし:
Next 縦
End Sub

www.nocodevba.com

マクロを使うメリット

手作業で数分かかる作業が、1秒で終わります。

ぜひ、アプリをご利用ください。

 

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