- ベストアンサー
Excel2000の関数式で6桁の数字の一致とエラーチェックを行う方法
- Excel2000を使用して、6桁の数字が特定の条件に一致するかどうかをチェックする方法を教えてください。
- 特定の条件に一致しない6桁の数字が入力された場合にエラーが表示されるようにしたいです。
- さらに、数字の桁数が4桁や5桁でも同様の方法でチェックできると助かります。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
条件付き書式でやっては? 対象シートがSheet1,Sheet2のA列に数字の一覧があるとします。 (1).Sheet2のA列に名前定義で名前を付けます(今回の例では:ChkData) (2).Sheet1に戻って、A2セルを選択して書式→条件付き書式→数式が…で、以下の式を入れます。 =(COUNTIF(ChkData,A2)=0) 書式は適当に(例:赤く塗りつぶす) (3).B2セルにも同様に、以下の様に設定します。 条件1 式: =(B2="") 書式:白く塗りつぶす 条件2 式: =(COUNTIF(ChkData,B2)=0) 書式:赤く塗りつぶす 条件3 式: =(MOD(A2,1000)<>INT(B2/1000)) 書式:ピンクに塗りつぶす (4).B2セルをコピーしてAV2まで書式をコピペ (5).A2:AV2をコピーして下方向に必要なだけ書式をコピペ これで、一覧にない数字の場合、そのセルが赤く。左隣のセルの後半3ケタと、自セル前半3ケタが不一致な場合セルがピンクになります。 添付の画像はExcel2010でやった場合です。
その他の回答 (5)
- mt2008
- ベストアンサー率52% (885/1701)
ANo.3です。 > もし、8桁になった場合、(前後4桁でチェックする場合) > 教えて頂いた方法の、どの部分を変更すれば対応できるのでしょうか? 条件3の式を以下の様に変えて下さい。 =(MOD(A2,1000)<>INT(B2/1000)) ↓ =(MOD(A2,10000)<>INT(B2/10000)) MOD(A2,10000)が、A2の値を10000で割った余り=下4ケタの値 INT(B2/10000)が、B2の値を10000で割った整数部=上4ケタの値 です。
お礼
何度も、有難うございます。 とても簡単で、私のような無知な者でも理解できました。 本当に有難うございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
シート1に入力シート1が有るとして、シート2のA列には一覧シートが有るとします。 条件に合わない数値に色を付けるとしてシート1のA2セルから例えばAV100セルの範囲を選択します。その上で条件付き書式を設定します。 条件付き書式の設定では数式が・・で選んで数式の窓には次の式を入力します。 =AND(COLUMN(A1)>1,B2<>"",OFFSET(A2,0,-1)<>"",OR(RIGHT(TEXT(A2,"000000"),3)<>LEFT(TEXT(B2,"000000"),3),RIGHT(TEXT(OFFSET(A2,0,-1),"000000"),3)<>LEFT(TEXT(A2,"000000"),3))) 書式をクリックして塗りつぶしのタブで例えば赤色を指定してOKします。 これでお示しのルールに従わないデータには赤色が付きます。 また、一覧の数値に無いデータにもセルに色を付けるために例えば上と同じように範囲を選択した上で、条件付き書式では数式の窓に次の式を入力します。 =AND(A2<>"",COUNTIF(Sheet2!$A:$A,A2)=0) 書式をクリックして塗りつぶしのタブから黄色を設定してOKします。 これでご質問の(1)、(2)のケースではセルに色が付くことになります。
お礼
ご回答有難うございます 条件付書式設定でうまく出来ることが分かりました。 有難うございました。 お手数をお掛け致しました。
- chonami
- ベストアンサー率43% (448/1036)
MATCHの括弧を閉じてないからかな、と思うのですがその前に2000だとIFERROR使えませんがいいんでしょうか?
お礼
ご回答頂きまして有難うございます。 Excel2000では、IFERRORは使えないんですね。 調べてみたら、どうも駄目みたいです。 折角教えて頂いたのに残念です。
- kuma310min
- ベストアンサー率40% (212/518)
IF文は多重構造に出来るので、 =IF(RIGHT(・・・)<>LEFT(・・・),"ERR",IFERROR(MATCH(・・・),"ERR")) ※「・・・」の部分は、質問文と同じ ただし、”ERR"または、MATCH関数の結果(数字)が表示されると思うので、 見にくくなるかもしれません。
補足
ご回答有難うございます。 式の作成が間違えているのだと思うのですが、 引数が多すぎるとかえります。 =IF(RIGHT(TEXT(入力sheet1!A2,"000000"),3)<>LEFT(TEXT(入力sheet1!B2,"000000"),3),"","ERR",IFERROR(MATCH(入力sheet1!A2,一覧sheet!$A$1:$A$500,"ERR")) で宜しいでしょうか。 お手数ですが、よろしくお願い致します。
- aokii
- ベストアンサー率23% (5210/22062)
まずは、全てのセルのデータを数値にするために、=VALUE(A1)にすることをお勧めします。
補足
ご回答ありがとうございます。 間違えていたらすみません。 =VALUE(A1)にしますと、0から始まる数字は0が消えてしまいました。 013456と13456は違うデータ(数字の組合せ?と表現したら良いでしょうか・・)になるため、 頭の0も表示したいです。
お礼
ご回答有難うございます。 教えて頂いた方法で、6桁の場合の(1)(2)とも解決することが出来ました! まずは、御礼申し上げますm(__)m
補足
追加で質問なのですが、 もし、8桁になった場合、(前後4桁でチェックする場合) 教えて頂いた方法の、どの部分を変更すれば対応できるのでしょうか? ご回答頂けましたら有り難いです。宜しくお願い致します。