• ベストアンサー

エクセル IF関数を教えてください。

数字(10桁)のデータがあります。(1234567890、2345678912のような) 例えばB列にそのようなデータがあり、IF関数にてそのうちの1から始まる10桁のデータは"AA1"。2から始まる10桁のデータだったら"BB2"という結果を出したい場合なのですが、どのような論理式を立てればいいでしょうか?10桁の数字は、1から始まれば全て"AA1"2から始まればBB2と結果がでるようにしたいのです。 どうかお分かりになる方ご返答お待ちしております。よろしくお願いいたします。

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.3

セルA1に値入っているとして、IF関数を使うなら、 =IF(LEFT(A1,1)="1","AA1",IF(LEFT(A1,1)="2","BB2","?")) ――とか。 CHOOSE関数を使う手もあります。 詳しくはExcelのヘルプをご覧下さい。

tabasil
質問者

お礼

そうです!この数式を途中まで考えていたんです。 参考になりました。ありがとうございました。

その他の回答 (5)

  • nobu555
  • ベストアンサー率45% (158/345)
回答No.6

質問文のように、1と2だけなら、IF関数でもよいのですが それ以上になってくると#1さんがおっしゃるとおりややこしい上、 最大7つまでしかネストに組み込めません。 それよりは、表示リストをつくり、VLOOKUP関数やINDEX関数のほうが 簡単だと思います。

tabasil
質問者

お礼

すみません、補足に書き込んでしまいました<(_ _)> 最大7つまでしかネストに組み込めないんですね。 勉強になりました。 ありがとうございました。

tabasil
質問者

補足

最大7つまでしかネストに組み込めないんですね。 勉強になりました。 ありがとうございました。

  • Mr_Holland
  • ベストアンサー率56% (890/1576)
回答No.5

 頭の数字のよって、「AA1」から「II9」までに表示し分けるということでよろしいでしょうか。  それでしたら、セルに次のように入力すれば変換できます。   「=REPT(CHAR(CODE(A1)+16),2)&LEFT(A1,1)」  この方法は、「1」~「9」をコードで表すと49~57になり、「A」~「I」が65~73になることを利用したものなので、if関数を使わずに済み短く表せる利点があります。

tabasil
質問者

お礼

見た事もない関数が・・・・(苦笑) 勉強になりました。ありがとうございました。

回答No.4

数字を文字列に変換して左側1バイト(1文字)を見る、というのが正攻法だとは思いますが、別解として 1000000000(や2000000000等)で割算してみるってのはどうでしょう? 商が1以上2未満であればご希望の事が出来ると思います。 3以降9まであるならIFのネストがとっても深くなるのは他のみなさんの解と同様なので、やっぱりAno1さんのおっしゃるとおり関数自作の方がいいかもしれません。

tabasil
質問者

お礼

こんなやり方もあるんですね。。 参考になりました。ありがとうございました。

  • driverII
  • ベストアンサー率27% (248/913)
回答No.2

B1にデータがある場合、 =IF(LEFT(TEXT(B1,"@"),1) = "1", "AA1", "BB2") 設定したい文字列が多数ある場合、VLOOKUPなどを利用します。

tabasil
質問者

お礼

ありがとうございました。 参考にさせて頂きます。

noname#61245
noname#61245
回答No.1

B列に入る数値がすべて10桁である(10桁であることを検証する必要はない)、かつ1ケタ目は1か2で必ず始まる。という条件が付けられるのであれば、下記で対応できます。 =IF(LEFT(Bn,1)="1","AA1","BB2") もし、1ケタ目がいろいろ変わるのであれば、"BB2"のところをネストすれば出来ますが、ややこしくなるので関数作ったほうが早いかも知れません。

tabasil
質問者

お礼

早速のお返事ありがとうございました。 参考にさせて頂きます。

関連するQ&A

  • エクセル IF関数での質問です

    アルファベット+数字(10桁)のデータがあります。(A1234567890、G1472583690のような) 例えばD列にそのようなデータがあり、IF関数にてそのうちのAから始まるデータは"見積済み"という結果を出したい場合なのですが、論理式にはどのような式を立てればいいでしょうか?10桁の数字はどのような数字であっても関係なく、Aから始まれば全て"見積済み"と結果がでるようにしたいのです。どうかお分かりになる方、ご返答お待ちしております。よろしくお願いいたします。

  • IFとVLOOKUP

    DのコラムにIDaa001アルファベット2文字と数字3桁 Fのコラムに商品名の入ったシートaa DのコラムにID bb001アルファベット2文字と数字3桁 Fのコラムに商品名の入ったシートbb 上記二つのシートからデータを参照したいシートccが有ります。 シートccに入っているIDによって、参照するシートを変えたいので、IF関数を使ってみましたがうまくいきませんどの様にしたら良いのでしょうか? ちなみに私の書いた式は下記です =IF(A3=aa,VLOOKUP(D3,aa!A2:B99,2,FALSE),VLOOKUP(D3,bb!A2:B213,2,FALSE)) どうしたら良いのか分からなく、IDの頭2個のアルファベットをLEFT関数で抜き出して、Aのコラムに貼り付けて上記の式をつくってみましたがダメでした。 よろしくおねがいします。

  • ExcelのIF関数で

    IF関数で質問なんですが、複数条件(アンケートのような物)で、例えばA1:B100の中で、A列が「5」で且つB列が「3」の物を数えなさい。という式で抽出結果を一覧表にしたいのですが、抽出結果が0の場合「0」が表示されてしまい、とても見苦しくなってしまいます。0の場合は空白にしたいのですが悩んだ結果、 =IF(SUM(IF(A1:A100=5,IF(B1:B100=3,1,0),0))=0," ", (SUM(IF(A3:A100=5,IF(B1:B100=3,1,0),0)))) のような長い式になってしまいました。他に良い方法かあるでしょうか? ご教授ください。

  • エクセル2007 IF関数について教えてください

    お世話になります。 どうしてもIF関数がうまくできず困りはてています。 下記のような項目を含むデータを2万件くらい抽出しています。 A列     B列  C列      D列 E列 状況    拒否理由       注文数   確認数 (1) 在庫不足   入力ミス  1     0 → キャンセル (2) 在庫不足       1      0 → 未処理 (3)                 5        0 → 未処理 (4)                 1       1 → 処理済 (5)   お客様キャンセル      10    0     →     キャンセル 未処理の件数を管理したいのですが、キャンセル扱いとなる条件を除く IF関数をうまく作成できません。 =IF(AND(D2>0,E5>0),"完了","未処理") といったように1個の条件についてはなんとかできるのですが、 B列が空欄or文字の入力有、C列が空欄、E列が0の数字の場合、D列の 数字を表示しなさい、といったようにまとめて、条件式をつくることができません。 何個かつなげると、TRUE、FALSEと表示され指定する列の(この場合D列)数字が表示 できません。 IF関数でなくてもよいのですが、未処理(キャンセル扱い除く)条件のみの数字を表示させる 方法をご教示お願いいたします。

  • エクセル関数について(IF関数)

    エクセルの関数について教えて下さい。 セルに1と入力した場合Aと出てきて、2と入力した場合B、3と入力した場合Cとなるような計算式を入れたいのですが、どのような式を入れればよろしいのでしょうか? 別のシートから呼び出す(?)というような方法でもいいのですが、どんな式を入れればよいのか、全く分かりません。 自分で調べてみた結果、IF関数を用いるということは解りました。 『IF(A1="1","A",IF(A1="2","B",IF(A1="3","C")))』 上記のような式を入れてみて、実際に実践してみたところ、結果としては入力した数字が表示されるだけで、計算式は消えてしまいました。 どうしたらいいのか解りません。 素人故に恥ずかしい質問ですが、お知恵を貸して下さい。 よろしくお願いします。

  • これはエクセルのIF関数を使ってできますか?

    こんばんは。 エクセルで悩んでいます。 A列に、"大学"・"高校"をオートフィルタで選べるようにして、 B列に、大学なら1~4の数字、高校なら1~3の数字を入力します。 そして、C列に、A1="大学"かつB1=1なら30(ポイント)、         A1="大学"かつB1=2なら40、         A1="高校"かつB1=1なら20、         それ以外は空白 というような自動計算式を作りたいと考えています。 この場合、IF関数とAND関数で作成すればできますでしょうか。下記のような式を作成しましたが、うまくいきません。 =IF(AND(A1="大学",1),30,IF(AND(A1="大学",2),40,IF(AND(A1="高校",1),20,""))) 説明が下手で申し訳ありませんが、 なんとかアドバイスいただければ幸いです。 よろしくお願いします。

  • エクセルIF関数で、

    エクセルIF関数で、 IF(論理値,A,B)はわかるのですが、 その応用のように、 1であれば○、2であれば△、3であれば× というような、より複雑な式の立て方があるのでしょうか? 宜しくお願いします。

  • エクセルのIF関数について

    エクセルのIF関数について質問をさせて頂きます。 現在、下記のような条件で抽出できる式を考えているのですが、 中々思うような式が思い浮かびません。 例えば、     A列  B列  C列  D列 1行目  111 2行目  222 3行目  333 4行目  444 5行目  555 6行目  666 7行目  777 8行目  888 9行目  999 上記のようなシートがあったとして、     A列  B列  C列  D列 1行目  111       999 2行目  222       333 3行目  333   ○   123   × 4行目  444 5行目  555 6行目  666 7行目  777 8行目  888 9行目  999   ○ 上記のように、例として C列の1行目に「999」と入力した場合、A列の9行目に「999」の数字があるので、その横のB列に「○」 C列の2行目に「333」と入力した場合、A列の3行目に「333」の数字があるので、その横のB列に「○」 C列の3行目に「123」と入力した場合、どこにも該当番号がないので、入力したC列の横、即ちD列の3行目に「×」を表示 要は、A列のどこかに該当数字があった場合にはその数字の横(B列)に「○」、どこにも該当数字が無い時には、入力した数字の横、D列に「×」を表示するような数式を考えています。 IF関数を使えばできるような気がするのですが、色々と試してみても中々うまくいきません。 下手な説明で分かり辛いかもしれませんが、どなたかご存知の方がいましたら、ご教授の程頂ければ幸いです。 どうぞ宜しくお願い致します。

  • エクセル IF関数

    こんにちは。よろしくお願いします。 添付のエクセルシートB列に A列の数字が5より小さい数字はそのまま、5より大きい数字の場合はすべて5 (セルB2は1、B3は2・・・セルB6~B10まではすべて5)となるような関数をお教えください。 勉強不足ですみません。よろしくお願いいたします。

  • エクセルのIF関数について

    フリーでダウンロードしたエクセルのファイルなんですが IF関数で分らない部分があります。 エクセルはマクロ以外なら大体マスターしたのですが どうもIF関数だけは苦手で… =IF(D12="",IF(D11="",IF(D10="",D9,D10),D11)) という式なんですが、どこで区切っていいのか分りません。 IF関数は =IF(論理式,A,B)という形が基本ですよね。 上式にあてはめると 論理式は D12="" となるのは分るのですが A,Bが分りません。 Aは IF(D11="",IF(D10="",D9,D10) Bは D11 と分けるとAのカッコの数が合わない。 Aを IF(D11="",IF(D10="",D9,D10),D11) とするとBが無くなる? 式がおかしいのかな?とも思ったのですが ちゃんと計算はされてるようだし… かれこれ2時間ほど悩んでいますが もう頭が混乱してきました… すいませんがお助け下さいm(__)m