Excel関数式で数字の下2桁の一致を確認する方法

このQ&Aのポイント
  • Excelの関数式を使って、数字の下2桁の一致を確認する方法を教えてください。
  • 特定のセルに入った4桁の数字の下2桁が、次のセルに入っている数字の上2桁と一致していないとエラーが出るような関数式を探しています。
  • 大量の数字をチェックする必要があるため、手動でフィルターするのは非効率です。効率的な方法を教えてください。
回答を見る
  • ベストアンサー

Excel関数式で対応出来るか教えて下さい

例えば 0001 0125 2532 3286 8545 という数字がA列の1行目からB列1行目・・・というふうに、 順番に一行に入っていたとします。 (次の行も同様に、何かしらの数字が入っています。) ひとつのセルに入った4桁の数字の下2桁が、次のセルに入っている数字の上2桁と一致していないとエラーが出るような関数式を探しています。 例では最後のセルに入っている4桁の8545の85がひとつ前のセルに入っている数字3286の下2桁86と一致していないのでエラーとなります。 数字の4桁が5桁になって、下3桁が上3桁と一致しているか確認、下2桁が上2桁と一致しているか確認というケースが混在する時もあります。 チェックする数字が大量にあるため、フィルターでチェックするのには気が遠くなります。 お知恵を拝借出来ますよう、宜しくお願い致しますm(__)m

質問者が選んだベストアンサー

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.7

同じ行に4ケタと5ケタの数字が混ざっていて、そのセルと右側のセルがいずれも5ケタ以外は2ケタ分だけの比較という条件なら、以下の数式で判定できます。 ただし、G列まで入力されているデータが最も長い行で、1列空けたI列に入力する場合の数式です。 不一致の場合はFalseが表示されます。 =SUMPRODUCT((RIGHT(TEXT(A1:G1,"0000"),2+(LEN(TEXT(A1:G1,"0000"))=5)*(LEN(TEXT(B1:H1,"0000"))=5))=LEFT(TEXT(B1:H1,"0000"),2+(LEN(TEXT(A1:G1,"0000"))=5)*(LEN(TEXT(B1:H1,"0000"))=5)))*1)=COLUMNS(A1:G1)-1

tamikosan
質問者

お礼

有難うございます。 試してみたのですが、エラーがあっても、すべてTRUEになってしまって、 上手く処理出来ませんでした。 お手数をお掛けしたのに、理解できず申し訳ないです。 ごめんなさいm(__)m もう少し頑張ってみます。

tamikosan
質問者

補足

何度もすみませんm(__)m 教えて頂いた式を一部間違えて入力していました。 再トライして、上手く出来ました。ありがとうございましたm(__)m 助かりましたm(__)m

その他の回答 (6)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.6

NO4です。 Excel2000でも色付け出来無い事はないのでよかったらお試しください。 仮にA1:H1範囲とします。 ■B1:H1を選択→書式→条件付き書式→「数式が」を選択、数式欄に=IF(LEN(A2)>4,(LEN(B2)>0)*(RIGHT(A2,3)<>LEFT(B2,3)),(LEN(B2)>0)*(RIGHT(A2,2)<>LEFT(B2,2)))を貼り付け→書式→パターンタブで任意の色を選択→OK   数式は、空白部分を考慮するように一部改訂しています。

tamikosan
質問者

お礼

ごめんさない。 先ほど、Excel2000では色が付かないと補足させて頂いた後で、 もう一度試しましたら色を付ける事が出来ました。 ただ、私のやり方が悪いのだと思うのですが、 結果が上手く出ません。 エラーでないのに、色が付かなかったりします。 お陰様で、今回はNo.5さんのご回答で解決出来ましたが、 色が付く方法は、結果がとても分かりやすいので、 もう少し教えて頂いた方法でも頑張ってみます。 有難うございましたm(__)m

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

例データ Sheet1のA1:E2 1 125 2532 3286 8545 9921 2145 4656 5643 4311 例はこういう風にデータ例を(シートの見た目のように)書くことをすすめる。 データ例は2-3行ぐらい書くべきと思う。 5桁の例も混じらせるとか。 ーー Sheet2にA1に =IF(RIGHT(TEXT(Sheet1!A1,"0000"),2)=LEFT(TEXT(Sheet1!B1,"0000"),2),"","ERR") と入れて、E1まで式を複写。 B1:E1の式を下方向に複写。 ーー 結果 Sheet2 -は空白セルを示す。 - - - - ERR - - ERR ーー >数字の4桁が5桁になって、下3桁が上3桁と一致しているか確認、下2桁が上2桁と一致しているか確認というケースが混在する時もあります。   長さが5桁かどうか(LEN関数)IFで聞いて、4桁(以下?)の場合は上記の式、5桁の場合は、同じような式を少し変えて作ってみて。 式が長くなるが、上記の延長線の話なので(式は略)。

tamikosan
質問者

お礼

有難うございました。 お陰様で解決できましたm(__)m 質問文に不備が多く、申し訳ありませんでした。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

>上2桁と一致していないとエラーが出るような関数式  ⇒対象のセルを色付けする方法は如何でしょうか。(エクセル2003以下での操作手順につき、相違する場合はweb検索して下さい)   B列から対象列まで選択→条件付き書式設定→「数式が」を選択、   数式欄に=IF(LEN(A1)>4,RIGHT(A1,3)<>LEFT(B1,3),RIGHT(A1,2)<>LEFT(B1,2))、   書式→パターンタブで色を選択→OK

tamikosan
質問者

補足

ご回答有難うございます。 やり方を理解出来ていないのかもしれませんが、 私の使っているソフトがExcel2000と古いため、 対象のセルを自動で色付けは出来ないようです。 間違っていたらごめんなさいm(__)m

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

回答2の例2,例3の式で,うっかり直し忘れがありました。 例2の訂正例: =IF(SUMPRODUCT(--(RIGHT(TEXT(A1:D1,"0000"),2)=LEFT(TEXT(B1:E1,"0000"),2))),"ERROR","OK") 例3の訂正例:文字列で記入されていて,3桁と3桁の場合 =IF(SUMPRODUCT(ABS(RIGHT(A1:D1,3)-LEFT(B1:E1,3))),"ERROR","OK") をEnterで入力。もちろん2桁に直して使っても問題ありません。 失礼しました。 #わざといろんな計算パターンを提示しています。興味があれば色々分析して,趣味に応じて使ってください。

tamikosan
質問者

補足

説明が悪くて申し訳ありません。 ・まず、0001は数値の1を「表示形式で0001」にしています ・4桁と5桁の組合せはランダムです。自動で判断できる材料はありません。 ・下記にように、データが入っている最後の列は行によって違います。 以下のイメージです。分かりづらくてすみません。      A列・・・ 1行目 0001 0157 57602 60233 3321  21233  23354 2行目 0001 0138 3842 4253 53112 11214 3行目 0012 1257 5763 6324 4行目 0001 0157 57602 60233 3321  2125  2523

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

>例えば >0001 このたとえばの言葉通りに「文字列で0001」と記入してあるのか,それとも実際には数字の1が入っていて表示形式で「0001」と表示させているだけなのかによっても,数式は当然変わります。正しい具体的な情報提供を心がけてください。 例1:「文字列で’0001のように」記入してある場合 F1セルに =IF(AND(RIGHT(A1:D1,2)=LEFT(B1:E1,2)),"OK","ERROR") と記入し,かならず「コントロールキーとシフトキーを押しながら」Enterして入力する。 例2:数値の1を「表示形式で0001」にしている場合 F1セルに =IF(SUMPRODUCT(RIGHT(TEXT(A1:D1,"0000"),2)-LEFT(TEXT(B1:E1,"0000"),2)),"ERROR","OK") と記入し,Enterで入力する 例3:文字列で記入してあり,3桁と3桁を比較する場合 =IF(SUMPRODUCT(RIGHT(A1:D1,3)-LEFT(B1:E1,3)),"ERROR","OK") をEnterで入力。 2桁なのか3桁なのか,何がどうならどうしたいのか詳細が不明なので,あなたが目で見て2や3と数式を直して入れる事にします。 何か自動で判断できる材料があるなら,その旨を数式に組み込んで一層高度化することも可能です。

回答No.1

細かな条件が分からないのでたたき台 A1:E1セルに文字列として数字が入力されているとして F1セルに =AND(RIGHT(A1:D1,LEN(A1)-2)=LEFT(B1:E1,LEN(A1)-2)) [Ctrl]+[Shft] +[Enter] で確定、配列数式。{ }で挟まれる エラーではなく FALSEになりますが。

tamikosan
質問者

補足

早速にご回答頂き有難うございます。 文字列で入力していなかった為、上記式では上手く反映しませんでした。 説明が悪くてすみませんでしたm(__)m

関連するQ&A

  • Excel2000使用・関数式を教えてください

    A列~AV列まで6桁の数字が入力されています。 行によって、入っている件数(F列までデータが入っているとか、 AC列まで入っているとか)はマチマチです。 入っている数字もマチマチです。 数字の中には、000001、001000など、0から始まる数字もあり、 セルの書式設定はユーザー定義で種類を000000にしています。 別sheetに6桁の数字の一覧があるのですが、 (1)一覧にない数字が入力されているとエラーが表示されるようにしたい また、 (2)6桁の数字は前半3桁と後半3桁が隣の列のセルと一致しないといけないのですが、 不一致の場合は、エラーが表示されるようにしたい 例) A2 000001 B2 001000 C2 000120 D2 120346 E2 346508 F2 508346 G2 346508・・・    A3 123456 B3 456280 C3280002 D3 002428 E3 428508 F3 508346 G3 346213・・・ E2 346508 F2 508346 G2 346508 のように数字が繰り返すこともあります。 Light関数を使うと(2)は解決できたのですが(1)が解決しません =IF(RIGHT(TEXT(入力Sheet1!A2,"000000"),3)=LEFT(TEXT(入力Sheet1!B2,"000000"),3),"","ERR") MATCH関数を使うと =MATCH(入力Sheet1!A2,一覧sheet!$A$2:$A$500,0) (1)は解決したのですが、(2)が解決しません。 (1)(2)とも解決する式、或いは方法を教えて頂けたら助かります。 上記の関数式は、以前、この場で教えていただいたものです。 入力用のシートと別に、検証用のシートを作成しています。 又、もし、もし可能でしたら、別シートにある数字が4桁と5桁と6桁が混在している場合でも流用できるものであるとなお有り難いです。 その場合は前後の3桁が一致するときと、前後の2桁が一致するときがあるという イレギュラーなケースになります。入力した数字は以下のようになります 12345 4512 12650 65034 3458 58260 260013 013134 ・・・ よろしくお願い致しますm(__)m

  • Excel関数

    Excel2010を使用しています。 A~E列 及び H~K列の1,000行目くらいまで、1ケタから5ケタの数字を入力しています。 重複した数字がないか確認したいのですが、適した関数はありますか? (重複していた場合、指定したセルに「重複」と出るような関数など) セルは空欄の場合もあります。 ご教示いただければ幸いです。よろしくお願いします。

  • Excel2010のCOUNTIF関数で誤動作

    A列に20桁の数字ばかりの「文字列」が入ったセルが1000行ほどあります。 A列の書式は文字列に設定してあります。 特定のセルの中身が重複してないことを確認しようと。 B1=COUNTIF(A:A,A1) のようにしたところ、うまく動きませんでした。 調査したところセル先頭から15文字までしか認識してくれません。 文字列扱いして欲しいのですが、数字ばかりなのが気に入らないようです。 数字だけのまま20桁認識させる方法は無いものでしょうか?

  • Excel関数について

    Excel関数について質問です。 以下の二つ (1) 下のように、セルA1から入力されてるものを、1、2、3・・と数字順に並び替える良い方法はありますでしょうか。 A-1 A-10 A-10A A-100 A-2 A-20 A-22.5 ・ ・ A-555 ・ ・ (2) 一行目と二行目に値の入ったセルと空白セルが混在しています。どちらも同じものに対する値の為、一行目にまとめようと、一行目の空白セルに二行目のセル(下)に値がある場合はその値を返し、空白の場合は空白のままにするというIF関数を使いましたがうまくいきませんでした。三行目と四行目、五行目と六行目・・とかなりあります。良い方法を教えていただけますでしょうか。 よろしくお願いいたします。

  • Excel関数

    緊急です。 ExcelでVBAを使用せずに、 セルA1と列Bのどれかが一致した時に、 一致した行の、つまりセルA1と一致したB○の横の列Cにある値をとってくることって出来ますか?

  • EXCEL教えてください

    EXCEL初心者です EXCEL2007(12.0.6654 5503)SP2を使用しております もしわかりましたら教えてください A列には1から連続する数字がはいっています ただし任意で途中で1からまた始ります B列には任意の4ケタの数字がはいっています C列には100か101がはいっています B列とC列に数字を入力していくとき A列の1から連続した数字までの間で B列かつC列に入力した数字が重複してる場合 「すでに入力済みです!」とメッセージを表示させたいです たとえば以下の場合 一行目と7行目がB列:1000 C列:100でダブってますが A列をみると1から連続した数字までの間ではないのでこういうときにはメッセージは表示させず 一行目と3行目は「A列が1から連続した数字までの間で」かつ「B列かつC列に入力した数字が重複してる」 のでこういうときにエラーメッセージを表示させたいです    A  B  C 1  1 1000 100 2  2 4001 101  3  3 1000 100 4  1 2002 100 5  2 4000 100 6  3 6001 101 7  4 1000 100 説明がわかりずらかったらすみません 補足しますのでその旨記載お願いします

  • エクセルの検索・関数

    お分かりの方、教えて下さい!! エクセルにて、 A列に13桁の数字がランダムにあり、 C列にも13桁の数字がランダムにあり、 E列には1桁~3桁の数字がランダムにあります。 B列に同じ行のA列の13桁と一致するC列の13桁を見つけ、 そのC列のと同じ行のE列の数字を入れたいのです。 上記の内容が出来る関数を教えて下さい。 分かりにくくてすみませんが、よろしくお願いいたします。

  • エクセル関数での文字列?の検索

     ある行に0から5の一桁の数字が28列並んでいて、  その中で1の次にすぐ0が続いているかどうか  (ふたつの隣接するセルが10かどうか)を調べる  関数はどうなりますか?

  • EXCEL関数について

    EXCEL関数について EXCEL2003を使用しております。 お知恵を拝借願います。 Sheet1、A列、A2~A100セルに「1~10」の数字がランダムに入力されています。 数字は「グループ1」、「グループ2」・・・「グループ10」という意味です。 Sheet1、B列、A2~A100セルに「1~20」及び、「OK」、「NG」がランダムに入力されています。 Sheet2、A列、A2~A21セルに「1~10」までの数字(グループ)が順に入力されており、 Sheet2、1行目、B1~W1セルに、「1~20」及び「OK」、「NG」が順に入力されております。 ここで、Sheet2のB2セルに、Sheet1にて「グループ1」は 「1」をいくつ選択しているかを返す式を入れたいのですが、 SUMIF?COUNTIF?等でいろいろと試してみたのですが、うまくいきません。 同じように、C2セルであれば、「グループ1」は「2」をいくつ選んでいるか。 W5であれば、「グループ4」は「NG」をいくつ選んでいるかの式を入力したいのです。 拙文乱文、大変恐縮ですが、ご教示頂きたく何卒宜しくお願い致します。

  • Excel関数

    お世話になります。 Excelで、あるセル内の「~~Number○○~~」という文字列から、前後の不要な文字列を省いて「Number○○」部分だけを抽出する方法(関数?)はありますか。  注)○○の部分には様々な数字が入り、1桁の場合と2桁の場合があります。 また、「~~Number○○~~」という文字列から、自分で指定した特定の数字を含む場合のみ「Number○○」の文字列だけを抽出する方法もありますか。 ご教示いただきたく存じます。よろしくお願いします。

専門家に質問してみよう