• ベストアンサー

エクセル 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