- ベストアンサー
エクセルで文字の切り出し
皆さんコンニチは ある特定の文字を切り出すのに苦労しています。 A列 B列 C列 1行 a1234 OK 2行 m4056 OK 3行 ay658 NO 4行 mr698 NO 上記のように、A列にデータがありB列には先頭文字が 「 a 」又は「 m 」の場合のみ「OK」を表示させる 関数を入力したいのですが、どのようにすればよいのでしょうか VLOOKUP関数も考えたのですが、データ量があまりにも多くて実用にならないと断念しました。 よろしくお願いいたします。 エクセル2000
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No.1の回答、No.2の回答共に1~4行全てが「OK」になるのでは? この内容からは、左1文字目に"a" または "m"で、且つ 2文字目が数字のものが 「OK」、そうでないものが「NO」を表示するものと解釈します。 セルB1に下記の式を入れ、必要分下へフィルハンドルコピーします。 =IF(AND(OR(LEFT(A1,1)="a",LEFT(A1,1)="m"), ISNUMBER(VALUE(MID(A1,2,1)))),"OK","NO") これでどうでしょうか。
その他の回答 (4)
- comv
- ベストアンサー率52% (322/612)
こんにちは 例のように2文字目も判断の対象になる(2文字目 が英字の場合NO)のであれば =IF(AND(OR(CODE(A1)=97,CODE(A1)=109),CODE(MID(A1,2,1))>48,CODE(MID(A1,2,1))<58),"OK","NO") てことでしょうか?
お礼
ありがとうございます。 この関数で出来ました。 CODE(A1)=97,CODE(A1)=109・・・は「a」や「m」の事 なんですね、 少し戸惑いましたが、なんとか解決しました
- imogasi
- ベストアンサー率27% (4737/17069)
>VLOOKUP関数も考えたのですが、データ量があまりにも多くて実用にならないと断念しました。 ???無理にやろうとすれば出来ますよ。 既回答が正解ですが、敢えてVLOOKUPでも出来るのではないですか。 例えば使わない範囲として、D1:E2に a OK m Ok と入れます。 B列にOKを出すとして B1に=VLOOKUP(MID(A1,1,1),$D$1:$E$2,2,FALSE)を入れます。B2以下、下方向に複写します。 Falseにすること。大文字もOKならD3:E3以下に A OK M OK を増やせば良い。式が少し変りますが。 第1字がa,m以外だと#N/Aがでて目ざわりですが ISERRORで防止する方法は、ご存じとして略。
お礼
ありがとうございます。 VLOOKUPも使えそうですね でも、二文字目以降も判断対象にした場合の関数がほしいので よろしくお願いいたします。
- happypoint
- ベストアンサー率36% (521/1422)
=IF(OR(LEFT(A1,1)="a",LEFT(A1,1)="m"),"OK","NO") LEFT関数が文字の切り出しを行います。 OR関数で、「a」か「m」いずれかに該当する場合、TRUEを返します。 IF関数で、OR関数の結果がTRUEの時OK,FALSEのときNOを表示させています。
お礼
ありがとうございます。 この関数ですと2文字以降の記号までは判断されません 私の説明が稚拙で申し訳ありませんでした。 例えば a1234 は「OK」で、as123 は「NO」でなければならないのです。 あくまでも最初の一文字目のみが「a」か「m」の時に 「OK」を表示したいのですが・・・・・
- sero
- ベストアンサー率47% (916/1944)
b1に「=IF(LEFT(A1,1)<>"a",IF(LEFT(A1,1)<>"m","","OK"),"OK")」 と入力してオートフィルして下さい。
お礼
ありがとうございます。 この関数ですと2文字以降の記号までは判断されません 私の説明が稚拙で申し訳ありませんでした。 例えば a1234 は「OK」で、as123 は「NO」でなければならないのです。 あくまでも最初の一文字目のみが「a」か「m」の時に 「OK」を表示したいのですが・・・・・
お礼
ありがとうございました。 ANDとORを駆使して出来るんですね 分りやすくて、他にも利用できそうなので色々と 試してみます。