- ベストアンサー
エクセル2000で、A列の3桁のデーターで1桁の値が
エクセル2000で、A列の3桁のデータがあり、一の位が、1又は2の場合、B列に一の位が1ならば"A"、B列に一の位が2ならば"B"としたいのですが、IF関数RIGHT関数を組み合わせてみましたがうまくいきません。この暑さで頭が冷や汗かいてます。よきアドバイスお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
RIGHT関数は文字列を対象としますから、A列のデータが数値の場合には意図した通りにはいかないと思います。 で、対処法ですが、 =INT(数値-10*INT(数値/10)) で数値の1の位を取り出して、IF文の条件に用いるのが宜しいかと。 実際には、 =IF(INT(A1-10*INT(A1/10))=1,"A",IF(INT(A1-10*INT(A1/10))=2,"B","")) をB1セルに入力すれば、 A1の1の位が1:A A1の1の位が2:B それ以外:空白文字列 となるハズです。 (少なくともExcel97ではOKでした)
その他の回答 (2)
- nishi6
- ベストアンサー率67% (869/1280)
こんな方法もあります(参考に)。3桁の数値で1の位が1か2のみなら、 =CHAR(64+MOD(A1,10)) でもでます。ASCIIコードを計算しています。 数値ということで1の位が1~9,0を全て別文字に置き換えるなら、Ifはネストが7つまでなので使用できませんね。 comvさんのCHOOSEがわかり易いですね。 上の式を1~9,0まで対応にして(無理やり!) 0はスペース(ASCIIコード=32)にすると =CHAR(64+MOD(A1,10)-(MOD(A1,10)=0)*32) 0はJにするなら、=CHAR(65+MOD(A1-1,10)) ・・・やはりCHOOSEがいいですね。 蛇足ですが、セルに入力した数字は数値と文字の両方の性質を持っています。 A1に12、B1に34を入力して、C1に=A1+B1 とすれば、C1=46。 C2に=A1&B1とすればC2=1234 と表示されます。 たとえば、8桁数値、20010722(C3に入力)が年月日だとすれば、 年=LEFT(C3,4)または=MID(C3,1,4)、月=MID(C3,5,2)、日=MID(C3,7,2)または=RIGHT(C3,2) 当然この年、月、日は文字としても数値としても使えます。
お礼
とっても詳しいので助かります
- comv
- ベストアンサー率52% (322/612)
こんにちは! 様々な方法がありますが数例 1.BA-BAさんが思いついた方法 =IF(RIGHT(A1,1)="1","A",IF(RIGHT(A1,1)="2","B","")) 一位の数値を文字として取り出したので文字として("1")判断する必要があります。 2.数値としての判断 =IF(COUNT(A1),IF(MOD(A1,10)=1,"A",IF(MOD(A1,10)=2,"B","")),"") 3.一位の位0~9までの表示をそれぞれ表示させる したの場合、0は空白 あとはA~I =IF(COUNT(A7),CHOOSE(MOD(A7,10)+1,"","A","B","C","D","E","F","F","H","I"),"") こんなかんじでしょうか!
お礼
そうなんです。RIGHT関数を使うと文字にに変えなければいけないので困ってました。 ありがとう
お礼
ばっちりです。金種別の両替表を以前作成したときにINTを使った覚えがあったのですが,こういう場合に使うんですね。ありがとうございます