「九九って81マスあって最大値も81なのに36種類しか数がないの不思議だよな」
というツイートをキッカケにしたまとめ記事を見かけました。
Excelユーザーとしては、こういうのをExcelで確認したくなります。
九九で出現する数を確認するExcelマクロ
九九で出現する数を確認するために、掛け算の式を列挙するExcelマクロを作ってみました。
Const N = 9
Dim i As Long, j As Long
Range("A1").CurrentRegion.Delete
For i = 1 To N ^ 2
Cells(i, "A").Value = i
Next i
For i = 1 To N
For j = 1 To N
Cells(i * j, Columns.Count).End(xlToLeft).Offset(0, 1).Value _
= i & " * " & j
Next j
Next i
Range("A1").CurrentRegion.HorizontalAlignment = xlCenter
Cells(N ^ 2 + 2, "B").Formula = "=COUNTBLANK(B1:B" & N ^ 2 & ")"
Cells(N ^ 2 + 1, "B").Select
End Sub
上記のSubプロシージャを実行すると、アクティブなシートに九九で出現する数を確認する、掛け算の式を列挙した下図のような表が作成されます。
A列に1から81までの数値が、B列より右に結果がその数値となる掛け算の式が、文字列として入力されます。
九九で出現する数を確認するExcelマクロの解説
九九だけでなく、例えば19×19のような場合も確認できるように、いくつの掛け算まで行うかを定数で指定するようにしています。
Const N = 9
アクティブシートの既存データを削除してから、
Range("A1").CurrentRegion.Delete
A列に「1」から「81」までの整数を入力します。
For i = 1 To N ^ 2
Cells(i, "A").Value = i
B列より右に、積がA列の数値となる掛け算を列挙しています。
For i = 1 To N
For j = 1 To N
Cells(i * j, Columns.Count).End(xlToLeft).Offset(0, 1).Value _
= i & " * " & j
「Cells(行番号, Columns.Count).End(xlToLeft)」という定番のオブジェクト式で、データの入力されている横方向の最終セルを表すRangeオブジェクトを取得して、そのOffsetプロパティで新たにデータを入力するRangeオブジェクトを取得しています。
書き出しが終わったら、数値と掛け算を中央揃えにして、
Range("A1").CurrentRegion.HorizontalAlignment = xlCenter
B列の下に、
出現した数がいくつあるかをCOUNTA関数で、
Cells(N ^ 2 + 1, "B").Formula = "=COUNTA(B1:B" & N ^ 2 & ")"
出現しなかったた数がいくつあるかをCOUNTBLANK関数で、
Cells(N ^ 2 + 2, "B").Formula = "=COUNTBLANK(B1:B" & N ^ 2 & ")"
カウントする数式を入力しています。
- Newer:VBAでグラフタイトルのフォントサイズを
- Older:自分でもマクロが出来るようになるのではと思えた
Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » 九九で出現する数をExcelマクロで確認する