5回繰り返しなら、聞いてみよう(ChatGPTでExcelマクロ)

目下の反復練習は、ストレッチとタイピングです。

■ ■ 発売中 ■ ■
決算書のつくり方
kindle版 

なぜ社長は決算書に興味がないのか?
Kindle版

100あったら?

反復、継続は練習にはなりますが、、
今までの自分の合言葉は、「それが100回くりかえしなら?」でした。

たくさん(の例えとして、100回)あったら、何とかしようと考えます。
連続したデータなら、やりようもあります。

でもこれが連続していない、セル結合がされているなど、いわゆる「データ」になっていない場合。
すき間だらけのシートです。

すき間だらけがいいのはスケジュール表で、Excelデータではいただけません。

もし1,2行なら、コピペしたり、Ctrl+D とかでもいいかもしれません。

でもこれを100行コピペ、コピペ、コピペ・・・
Ctrl+D、Ctrl+D、Ctrl+D・・・

気が遠くなります。

5回以上繰り返してはいけません。

ChatGPTは頼れます

冒頭のExcelシート。よくありがちなパターンです。

「連続したデータで、装飾類はしないでくださいね」
いちおうお願いはしているわけですが、入力する側にも得手不得手やこだわりがあります。

・日付をすべてに入れるのはめんどくさい
・日付は「2023/3/20」より、「3月20日」の方が見やすい
・日付は勝手に「3月20日」になるから、それでもいいでしょ
・センタリング(中央揃え)の方が見やすい
・月ごととか、適宜の場所で行を空けたほうが見やすい

こんなとき、マクロ(VBA)の出番なわけですが、何回もくじけてきました。
ネットや本で探してみても、いまいちピッタリするものが見つからない。

しかしここに来て、ChatGPTは頼りになります。

ちゃんと聞けば、答えてくれます。

今回は、次の3つを聞いてみました。
1,空白行を詰めたい
2,日付を連続させたい
3,装飾(中央揃え)を取りたい

の3つです。

教えてもらった3つのマクロ

順番に聞いていきます。

今回びっくりしたのは、
答えのコードはもちろん、各行で「このコードはこういうことやってるよ」と「’」のコメントまで付いていたこと。
これは勉強になります。

2の日付を連続させたい場合は、こう聞いてみました。
「Excelで、特定の列において空白セルがあった場合、そのセルの真上のセルの内容をコピーするマクロ」

そうすると、下記のようなコードと解説です。

Sub FillBlanksFromAbove()
Dim lastRow As Long
Dim i As Long
Dim targetCol As Integer

targetCol = 3 ‘ ここに対象の列の列番号を入力

lastRow = ActiveSheet.Cells(Rows.Count, targetCol).End(xlUp).Row

For i = 2 To lastRow
If Cells(i, targetCol) = “” Then
Cells(i, targetCol).Value = Cells(i – 1, targetCol).Value
End If
Next i
End Sub

上記の例では、3列目に空白セルがある場合、その直前の行の値をコピーしています。targetCol変数に対象の列番号を入力して、実行してください。

このようにして聞いた3つのマクロを、対象シートに書き込み、実行してみました。
・・・ 秒で終わります。

もしこれなら、あれをする

構文を見てみるとあることに気づきます。
プログラムでは基本の、「If This Then That」の形になっています。

「もし(これ)なら、(あれ)をする」

「もし(空白行があった)ら、(行を削除)する」  です。

質問の形式もそうやって整理していくと、ChatGPTも答えやすいし、構文も作りやすいのでしょう。
相手の能力を上手に引き出すには、こういうことも考えて質問を投げてみたいところです。

「何がわからないかわからない」では、聞かれている方も答えようがありません。
やみくもに聞いてはダメですね。

こうやって余計な時間を節約できたら、このコードを自分で書けるように!
して行きましょう(声小さめ・・)

ーーー