重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Excelの関数について教えてください。
○から始まる場合は□、●から始まる場合は■、の複数の条件の計算式が知りたいです。

A列 B列
1234
2456
1235
1523
2452
2525
2254
1358

B列に
1から始まるものはA
2から始まるものはB
が入るような計算式を作りたいです。

=IF(COUNTIF(A1,”1*”),”A”),IF(COUNTIF(A1,”2*”),”B”)
で作成していますがエラーになってしまいます。
よろしくお願いします。

質問者からの補足コメント

  • 補足します。説明不足で申し訳ありません。

    実際に作成したい数字は9桁です。
    分岐は4つあります。

      補足日時:2020/12/04 12:23

A 回答 (13件中1~10件)

No.12です。


Officeサポートでは、↓
https://support.microsoft.com/ja-jp/office/mid-% …
MID関数の第2引数(開始位置)、第3引数(文字数)は数値と書いてあるのですが、実際には「文字」でもOKのようです。
つまり、前回回答の数式
=MID("ABCDABCDA",VALUE(LEFT(A1,1)),1)
の中のVALUE関数は文字を数値にするためのものですが、文字のままでもよいということになり、
=MID("ABCDABCDA",LEFT(A1,1),1)
としても機能するようです。
また、A列の頭の数値が4種類しかない場合、前回回答で「無い場合、空白でOK」と書きましたが、これは、いままでの回答者さんの例(1~4のみの場合)を記したものです。
1~9のうち欠番の数字があるなら、その部分には、「半角スペース」または「全角スペース」を入れるのが好ましい対応だと思います。
ご参考まで。
    • good
    • 0

考え方も含めて、解決方法について説明したいと思います。


まず、前提条件について確認したいと思います。前提条件は以下のとおりです。
(1)A列には9桁の数字が入力されている。
(2)A列の数字の書式は「文字列」なのか「数値」なのかは不明。
(3)A列の9桁の数字の頭の数字を判別し、B列にそれに対応する文字を表示したい。
(4)A列の9桁の数字の頭の数字の判別は4種類ある。
(5)(4)の4種類は1がA、2がBまでは決定しているがあとは不明
(6)A列の頭の数字が、例えば「1~4」のように4種類しかないのか、1~9まであり、それをルール付けして4種類に分けるのか不明。
というわけで、少なくとも不明となっている(2)(5)(6)の前提条件を決定しないといけません。
まず、(2)の問題は数値でも文字列でも対応可能な数式を考えます。
次に、「A列に9桁の数字がある」と言った場合、頭の数字は「1~9」の9種類あるとするのが常識的だと思いますので、(6)は「1~9」を4種類に分けることにします。
さらに、(5)の3以降の対応文字を決める必要があります。
例えば、別シートのA1~A9に1、2、3、・・・、8、9と数字を入れ、B1~B9にその数字に対応する文字A、B、・・・など4種類の文字を入れて対応表を作成します。(添付画像①)
仮にB1~B9が「A,B,C,D,A,B,C,D,A」になるとすれば、No.11さんが回答された数式を若干修正して、
B1には

=MID("ABCDABCDA",VALUE(LEFT(A1,1)),1)
または
=MID("ABCDABCDA",INT(VALUE(A1)/10^8),1)

という数式を記述すればよいことになります。(添付画像②)
ただし、これはあくまでも「例」なので、"ABCDABCDA"の部分は状況に応じて変更する必要があります。
もし、A列の頭の数字が「1~4」しかないのであれば、別シートの対応表はB5から下は空白でもOKです。
つまり、その場合はB1に
=MID("ABCD",VALUE(LEFT(A1,1)),1)
となるわけです。

No.11さんの使用されたFIXED関数はA列が数値だった場合でも「文字列」に変換されます。
しかし、他の回答者さんの使用例のように、そもそもLEFT関数は「数値」でも「文字列」でも有効に機能しますので、「文字化」のためにFIXED関数を使うのであれば、必ずしも必要ではないと思います。

余談ですが、別シートに対応表を作ったので、これを利用して、B1に
=VLOOKUP(VALUE(LEFT(A1,1)),別シート!$A$1:$B$9,2,0)
とするのもありかと思います。
「Excelの関数について教えてください。」の回答画像12
    • good
    • 0

A列入っているのが数値でも文字列でも:


=MID("ABCD",VALUE(LEFT(FIXED(A1,0,1),1)),1)

もしB列に表示したいコードが2文字以上の場合もありうるのなら、
=INDEX({"A","B","C","D"},VALUE(LEFT(FIXED(A1,0,1),1)),1)
の方が応用が利く。
    • good
    • 0

桁数に関係なく始まるのが数値で、"1","2","3","4"のどれかなら、


以下のものでも対応できます。
 =CHOOSE(LEFT(A1,1),"A","B","C","D")
    • good
    • 0

9桁?4分類?


9桁は数字なのかな?文字列ではない?
    • good
    • 0

No.5


こうです。
=IF(COUNTIF(A1,"1*"), "A", IF(COUNTIF(A1,"2*"), "B"))
    • good
    • 0

間違えた。



=IF(INT(A1/100000000)=1,"A",IF(INT(A1/100000000)=2,"B"…

みたいな感じで。

LEFT関数使うなら戻り値は文字列になるので

LEFT(A1,1)="1"

と言う感じにしないとダメだと思いますよ。
    • good
    • 0

こんにちは



ご提示の式は、括弧の対応関係がおかしいので意図した通りには働きません。
でも、直してたとしても結果は得られない可能性が高そうに思います。

想像するところA列の値は「数値」になっていませんか?
ご提示のCOUNTIFで識別できるのは、対象が文字列の場合なので、「
式を修正し、A列の値を文字列として入力し直す」ことをすればうまく動作すると考えられます。

とは言え、目的は最初の一桁目が1か2かを判定したいのでしょうから、素直に
 =IF(LEFT(A1,1)="1","A",IF(LEFT(A1,1)="2","B",""))
とでもしておけば宜しいのではないのでしょうか。
    • good
    • 0

こう書きます


IF(COUNTIF(A1,”1*”),”A”),IF(COUNTIF(A1,”2*”),”B”)
    • good
    • 0

LEFT(A1,1)=1


LEFT(A1,1)=2
で判定してみてください。

具体的には、
B1=IF(LEFT(A1,1)=1,"A",IF(LEFT(A1,1)=2,"B","X"))

貴殿の式は、途中で切れており、IF文をなしてはいません。
=IF(),IiF() …×
正しくは、以下の構文になります。
=IF( , ,IF())
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!