他の人が使用するワークシートを開発するときは、それらのワークシートをテストして、期待どおりに機能することを確認する必要があります。

これは、複雑な数式を含むワークシートや重要な目的で使用されるワークシートに特に当てはまります。ワークシートのテストの概念は、ワークシートのテストに使用する何らかのデータを生成する必要があることを意味します。

本全体が、ソフトウェアのテストスイートをまとめることについて書かれています。テストデータのコンパイルの厳密さは、主に、対象者のニーズとワークシートの性質によって異なります。

残念ながら、迅速な解決策はありません。必要なものを自動的に把握し、データを生成します。 Excelにはツールがありますが、この目的のために使用できます。

まず、ランダムな数値を生成する必要がある場合は、RANDまたはRANDBETWEENワークシート関数を使用できます。違いは、RANDは0から1の間の値を生成し、RANDBETWEENは設定した任意の境界の間の整数値を生成することです。

ただし、ランダムデータはテストのニーズに適していない場合があります。これは、数式の境界をテストする場合に特に当てはまります。

たとえば、大きな値、小さな値、または大きな値と小さな値の組み合わせを使用したテスト。同様に、数値ではなくテキストを入力として使用する(またはその逆)など、不適切な値をテストすることもできます。熟考する必要のある条件がすべてあり、ニーズに合ったデータの種類を選択します。

必要に応じて、マクロを使用してテストデータを生成できます。次のマクロは、設定した境界(最小値と最大値)の間で、選択したセル範囲をランダムな数値で埋めます。

Sub RandNums()

Dim MyRange As Range     Dim lMin As Long, lMax As Long     Dim dRand As Double

' If selection is not Excel Range     If TypeName(Selection) <> "Range" Then Exit Sub

Set MyRange = Selection

' Get Min and Max value     lMin = CLng(InputBox("Minimum?"))

lMax = CLng(InputBox("Maximum?"))



Randomize     Application.ScreenUpdating = False

For Each c In MyRange.Cells         ' Calculate random value, where         ' Value >= Min And Value <= Max         dRand = Rnd * (lMax - lMin) + lMin

' Use the following line only if the random         ' value should be an integer         ' dRand = Int(dRand)



c.Value = dRand     Next c

Application.ScreenUpdating = True End Sub

マクロを使用するには、ランダムな数値を含めるセルの範囲を選択してから、マクロを実行します。セルで整数値を使用する必要がある場合は、マクロ内の指定された行を「コメント解除」できます。

セルの範囲をランダムな日付で埋めたい場合は、RandNumsマクロを少し変更すると次のようになります。

Sub RandDates()

Dim MyRange As Range     Dim dtMin As Date, dtMax As Date     Dim dtRand As Date

' If selection is not Excel Range     If TypeName(Selection) <> "Range" Then Exit Sub

Set MyRange = Selection

' Get Min and Max value     ' From: 1/1/1990 (put your start Date)

dtMin = #1/1/1990#     ' To: Today     dtMax = Date

Randomize     Application.ScreenUpdating = False

For Each c In MyRange.Cells         ' Calculate random value, where         ' Value >= Min And Value <= Max         dtRand = Rnd * (dtMax - dtMin) + dtMin         dtRand = Int(dtRand)



c.Value = dtRand         ' Change format for cell, below, as desired         c.NumberFormat = "m/d/yyyy"

Next c

Application.ScreenUpdating = True End Sub

ここでも、範囲を選択してからマクロを実行します。必要な日付の境界を指定するために、dtMin変数とdtMax変数に設定された初期値を変更できます。必要に応じて、ランダムな日付がセル内に保存された後にセルに適用される書式を変更することもできます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(7989)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。