Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » 九九で出現する数をExcelマクロで確認する

九九で出現する数をExcelマクロで確認する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

九九って81マスあって最大値も81なのに36種類しか数がないの不思議だよな
というツイートをキッカケにしたまとめ記事を見かけました。

Excelユーザーとしては、こういうのをExcelで確認したくなります。

[スポンサードリンク]

九九で出現する数を確認するExcelマクロ

九九で出現する数を確認するために、掛け算の式を列挙するExcelマクロを作ってみました。


Sub 九九で出現する数を確認する()
 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 + 1, "B").Formula = "=COUNTA(B1:B" & N ^ 2 & ")"
 Cells(N ^ 2 + 2, "B").Formula = "=COUNTBLANK(B1:B" & N ^ 2 & ")"
 Cells(N ^ 2 + 1, "B").Select
End Sub

上記のSubプロシージャを実行すると、アクティブなシートに九九で出現する数を確認する、掛け算の式を列挙した下図のような表が作成されます。

九九で出現する数をExcelマクロで確認する

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 & ")"

カウントする数式を入力しています。

関連語句
VBA, Visual Basic for Applications
[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » 九九で出現する数をExcelマクロで確認する

TrackBack:0

TrackBack URL

Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » 九九で出現する数をExcelマクロで確認する

「マクロのサンプル」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.