目次
このチュートリアルでは、Excelでカスタムデータ検証ルールを作成する方法を紹介します。 このチュートリアルで紹介されるのは、EasyToolsのいくつかの例です。 特定のセル内の数値やテキスト値のみを許可したり、特定の文字で始まるテキストのみを許可したり、重複を防ぐユニークなデータを許可したりする、Xcelのデータ検証式です。
昨日のチュートリアルでは、Excelのデータ検証について、その目的、仕組み、組み込みルールを使ってワークシートのデータを検証する方法について説明しました。 今日はさらに一歩進んで、Excelのカスタムデータ検証の細かな側面について説明し、いくつかの異なる検証式を使って実験してみたいと思います。
数式を使用してカスタムデータ検証を作成する方法
Microsoft Excelには、数値、日付、テキストのデータ検証ルールがいくつか組み込まれていますが、これらは最も基本的なシナリオにしか対応していません。 独自の基準でセルの検証を行いたい場合は、数式に基づいてカスタム検証ルールを作成します。 その方法は次のとおりです。
- 検証するセルを1つまたは複数選択します。
- データ検証]ダイアログボックスを開きます。 このためには、[データ検証]ボタンをクリックします。 データバリデーション ボタンをクリックします。 データ タブで データツール のグループ、またはAlt> D> Lのキーシーケンスを押します(各キーは別々に押します)。
- について 設定 のタブをクリックします。 データバリデーション ダイアログウィンドウで カスタム において 許可する ボックスに、データ検証式を入力します。 式 ボックスを使用します。
- クリック よっしゃー .
オプションとして、ユーザーが有効なセルを選択したとき、または無効なデータを入力したときに表示されるカスタム入力メッセージとエラー警告をそれぞれ追加することができます。
以下に、さまざまなデータ型に対するカスタム検証ルールの例をいくつか紹介します。
注:Excelのデータ検証ルールは、組み込みもカスタムもすべて、ルール作成後にセルに入力された新しいデータのみを検証します。 コピーされたデータは検証されませんし、ルール作成前にセルに入力されたデータも検証されません。 データ検証基準を満たさない既存の入力項目を突き止めるには サークル 無効なデータ の機能は、Excelで無効なデータを検索する方法で紹介されています。
Excelのデータ検証で数字のみを許可する
Excelのデータ検証ルールは、特定のセルに数字だけを入力するようにユーザーを制限する必要がある場合、意外にも内蔵されているものはありません。 しかし、このようにISNUMBER関数に基づいたカスタムデータ検証式を使えば、簡単に行うことが可能です。
=ISNUMBER(C2)
ここで、C2 は検証したい範囲の一番上のセルです。
注)ISNUMBER関数は、有効セル内のあらゆる数値(整数、小数、分数、またExcel的には数値でもある日付や時間など)を許容します。
Excelのデータ検証でテキストのみ許可するように
逆に、与えられたセル範囲のテキスト入力だけを許可したい場合は、例えばISTEXT関数を使ってカスタムルールを作成します。
=ISTEXT(D2)
ここで、D2 は選択された範囲の最上位のセルである。
特定の文字で始まるテキストを許可する
ある範囲のすべての値が特定の文字または部分文字列で始まる必要がある場合、COUNTIF関数に基づき、ワイルドカード文字を使用してExcelデータ検証を行うことができます。
COUNTIF( セル ," テキスト *")たとえば、A列のすべての注文IDが「AA-」、「aa-」、「Aa-」、または「aA-」の接頭辞で始まることを確認するには、次のデータ検証式を使用してカスタムルールを定義します。
=COUNTIF(A2, "aa-*")
OR論理による検証式(複数条件)
有効な接頭辞が2つ以上ある場合は、複数のCOUNTIF関数を追加して、Excelのデータ検証ルールがOR論理で動作するようにします。
=COUNTIF(A2,"aa-*")+COUNTIF(A2,"bb-*")
大文字小文字を区別する検証式
文字の大文字と小文字が重要な場合は、EXACTとLEFT関数を組み合わせて、特定のテキストで始まる項目に対して大文字と小文字を区別する検証式を作成することができます。
EXACT(LEFT() セル , 文字数 ), テキスト )例えば、"AA-"で始まる注文IDのみを許可する場合("aa-"も "Aa-"も許可しない)、次の式を使用します。
=exact(left(a2,3), "aa-")
上記の数式では、LEFT関数がセルA2から最初の3文字を抽出し、EXACTがハードコードされた部分文字列(この例では「AA-」)と大文字小文字を区別して比較します。 2つの部分文字列が完全に一致する場合、数式は真を返して検証を通過し、それ以外の場合は偽を返して検証を失敗させます。
特定のテキストを含むエントリーを許可する
セル内の任意の場所(先頭、中間、末尾)に特定のテキストを含む項目を許可するには、ISNUMBER関数とFINDまたはSEARCHを、大文字と小文字を区別して検索するかどうかによって組み合わせて使用します。
- 大文字・小文字を区別しない検証: ISNUMBER(SEARCH() テキスト , セル ))
- 大文字・小文字を区別する検証: ISNUMBER(FIND() テキスト , セル ))
サンプルデータセットで、セルA2:A6に「AA」というテキストを含む項目のみを許可するには、以下のいずれかの数式を使用します。
大文字・小文字を区別しない。
=isnumber(search("aa", a2))
大文字・小文字を区別する。
=isnumber(find("aa", a2))
数式は次のようなロジックで動作します。
セルA2の部分文字列「AA」をFINDまたはSEARCHで検索し、どちらも部分文字列の最初の文字の位置を返します。 テキストが見つからない場合はエラーが返されます。 検索結果として返された数値については、ISNUMBER関数がTRUEを返し、データの検証は成功します。 エラーの場合、ISNUMBERはFALSEを返し、その項目はセル内に許可されません。
ユニークな項目のみを許可し、重複を許さないデータバリデーション
特定の列やセル範囲に重複があってはならない場合、一意な項目のみを許可するカスタムデータ検証ルールを設定します。 ここでは、重複を識別するために古典的なCOUNTIF式を使用することにします。
=COUNTIF( レンジ , 最上位のセル )<=1例えば、セルA2~A6に一意の注文IDのみが入力されるようにするには、以下のデータ検証式でカスタムルールを作成します。
=COUNTIF($A$2:$A$6, A2)<=1
一意な値が入力された場合、数式はTRUEを返し、検証は成功する。 同じ値が指定された範囲に既に存在する場合(カウントが1より大きい)、COUNTIFはFALSEを返し、入力の検証は失敗する。
絶対セル参照(A$2:$A$6)で範囲を固定し、最上位のセル(A2)には相対参照を使用して、検証範囲内の各セルに対して数式が適切に調整されるようにしていることに注意してください。
注)このデータ検証式は ケースインセンシティブ 大文字と小文字の区別はありません。
日付と時刻の検証式
内蔵の日付検証機能では、指定した2つの日付の間の日付、指定した日付より大きい、小さい、または同じ日付のみを入力するようユーザーを制限するために、非常に多くの定義済み基準が用意されています。
ワークシートのデータ検証をより細かく制御したい場合は、カスタムルールで内蔵機能を複製したり、Excelのデータ検証の内蔵機能を超える独自の数式を作成したりすることができます。
2つの日付の間の日付を許可する
指定された範囲内の日付に入力を制限するには、「間」の基準を持つ定義済みの日付ルールを使用するか、この汎用式を使ってカスタム検証ルールを作成することができます。
アンド( セル >=。 開始日 ), セル <= 終了日 )どこで
- セル は,有効範囲内の最上位のセルであり
- 立ち上がり と しゅうりょう の日付は、DATE 関数で指定された有効な日付か、日付を含むセルへの参照です。
例えば、2017年の7月の日付だけを許可するには、次の式を使用します。
=AND(C2>=DATE(2017,7,1),C2<=DATE(2017,7,31))
または、いくつかのセル(この例ではF1とF2)に開始日と終了日を入力し、計算式の中でそれらのセルを参照します。
=AND(C2>=$F$1, C2<=$F$2)
境界の日付は、絶対セル参照でロックされていることに注意してください。
平日または週末のみ許可する
ユーザーが平日または週末のみ入力するよう制限するには、WEEKDAY 関数に基づいてカスタム検証ルールを設定します。
とともに return_type 引数に2を指定すると、WEEKDAYは1(月曜日)から7(日曜日)までの整数を返す。 したがって、平日(月曜日から金曜日)は6より小さく、週末(土曜日と日曜日)は5より大きい数式になるはずである。
のみを許可する しゅぎょうび :
ウィークデイ( セル 2)<6のみを許可する 週末 :
ウィークデイ( セル ,2)>5例えば、セルC2:C6に勤務日だけを入力できるようにするには、次の数式を使用します。
=WEEKDAY(C2,2)<6
今日の日付を基準にした日付の検証
多くの場合、許容される日付範囲の開始日として今日の日付を使用したい場合があります。 現在の日付を取得するには、TODAY関数を使用し、それに必要な日数を追加して終了日を計算します。
例えば、データ入力を今から6日後(今日を含めて7日間)に制限するために、数式ベースの条件を持つ組み込みの日付ルールを使用することにします。
- 選択 日付 において 許可する
- 選択 間 において データ
- での 開始日 を入力します。
=TODAY()
- での 終了日 を入力します。
=TODAY() + 6
同様に、ユーザーが入力する日付を今日の日付より前または後に制限することができます。 この場合、次のいずれかを選択します。 未満 または より大きい において データ を入力してください。 =TODAY()
において 終了 日付または スタート の日付枠をそれぞれ表示します。
現在時刻を基準とした時刻の有効化
現在の時間に基づいてデータを検証するには、独自のデータ検証式で定義済みの「時間」ルールを使用します。
- での 許可する ボックスを選択します。 時間 .
- での データ のボックスで、どちらかを選びます。 未満 は、現在時刻より前の時刻だけを許可する、または より大きい で現在の時刻より後の時刻を許可します。
- での 終了時刻 または 開始時間 ボックスに(前のステップで選択した基準に応じて)、次の計算式のいずれかを入力します。
- 有効化するために 日時 は、現在の日付と時刻を基準にしたものです。
=NOW()
- 有効化するために 倍 は、現在の時刻を基準にしています。
=time( 時間(now()), 分(now()), 秒(now()))
- 有効化するために 日時 は、現在の日付と時刻を基準にしたものです。
以下のスクリーンショットは、現在時刻より大きい時刻のみを許可するルールを示しています。
Excelのカスタムデータ検証ルールが機能しない
数式ベースのデータ検証ルールが期待通りに動作しない場合、主に3つのポイントを確認する必要があります。
- データ検証式が正しい
- 検証式が空のセルを参照しない
- 適切なセルリファレンスが使用されている
Excelのデータ検証式の正しさを確認する
手始めに、検証式をいくつかのセルにコピーして、#N/A、#VALUE、#DIV/0!などのエラーが返されないことを確認します。
を作成する場合 カスタムルール の場合、式はそれぞれ論理値TRUEとFALSE、またはそれらに相当する1や0を返すべきである。
で計算式に基づく基準を使用する場合、その基準は くみこみそく (現在時刻に基づく時刻の検証を行ったように)、別の数値を返すこともできる。
Excelのデータ検証式は、空のセルを参照してはならない
を選択すると、多くの場面で ブランクを無視する ボックスを選択し(通常はデフォルトで選択されています)、数式で参照される1つ以上のセルが空白の場合、有効なセルにはどんな値でも許可されます。
ここでは、最もシンプルな形で例を示します。
データ検証式での絶対セル参照と相対セル参照
数式ベースのExcel検証ルールを設定する際には、数式内のすべてのセル参照が、以下のようになることを念頭に置いてください。 左上のセルを基準として を選択した範囲に表示します。
複数のセルに対してルールを作成する場合で、検証条件が 特定細胞 そうでない場合、ルールは最初のセルに対してのみ正しく機能します。 よりよく説明するために、次の例を考えてみてください。
セルD2~D5への入力は、1(最小値)からA2をB2で割った値までの整数に制限したいとします。 そこで、次の簡単な式で最大値を計算します。 =A2/B2
のように、"A "をクリックします。
問題は、この一見正しい数式がセル D3 から D5 では機能しないことです。 なぜなら、相対参照は行と列の相対位置に基づいて変化するからです。 したがって、セル D3 の数式は次のように変更されます。 =A3/B3
となり、D4では =A4/B4
データ検証の方法が間違っている
数式を修正するには、列と行の参照の前に「$」を入力し、ロックするだけです。 =$A$2/$B$2
または、F4キーを押して、異なるリファレンスの種類を切り替えます。
各セルを独自の基準で検証したい場合は、$記号のない相対セル参照を使用して、各行または/および列の数式を調整するようにします。
このように、「絶対的な真理」というものは存在せず、同じ数式でも状況や課題によって正解も不正解もあり得るのです。
以上、Excelでデータ検証を独自の数式で行う方法でした。 より理解を深めるために、以下のサンプルワークブックをダウンロードし、ルール設定を調べてみてください。 読んでいただきありがとうございました!また来週のブログでお会いしましょう
練習用ワークブック(ダウンロード
Excelデータ検証の例(.xlsxファイル)