[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『英文字がある場合のみ抜いて表示したい』(しゅうちゃん)
お世話になります。
Excel2000,Windows XPを使用しています。
A列に下記のような7ケタの文字列があるとき、
すべてが数字の時もあれば、A3やA5のように英文字が1文字だけ
含まれているときもあります。
A
B
1
1143090
2
1328707
3
3E09849
4
3098458
5
2G98763
英文字の種類は様々です。
二文字目に英文字が来るという規則はあります。
英文字が来たときは、その英文字を抜いて、
B列に6ケタの数字のみで構成した文字列を表示し、数字のみの場合は、
そのままの7ケタの数字をB列にしたいのですが、どのような関数を
つかればいいでしょうか。
関数の本を手に手に勉強中ですが、
なかなか思いつきませんでした。
お手数ですが、ご教授いただけましたら幸いです。
よろしくお願いします。
A B 1 1143090 1143090 2 1328707 1328707 3 3E09849 309849 4 3098458 3098458 5 2G98763 298763
B1=IF(ISNUMBER(A1),A1,REPLACE(A1,2,1,)*1) ★下にコピー (Maron)
> どのような関数をつかればいいでしょうか。
知りたいのは使用する関数だけでしょうか? いろいろな方法があるとは思いますが IF関数、COUNT関数、REPLACE関数の組み合わせで可能だと思います。
とりあえず先に数式の回答が出ているので
=IF(COUNT(A1*1),A1,REPLACE(A1,2,1,""))
(えくせる青年)2010/2/21 20:17
こ、こんなに早く回答をいただけるとは
思っておらず、びっくりしました。
感謝します。
教えていただいた、ISNUMBERとREPLACEの関数、COUNT関数をネットで調べてみました。
B1=IF(ISNUMBER(A1),A1,REPLACE(A1,2,1,)*1)は
「もしA1が数字ならA1をそのまま返す、そうでなければ、
A1の2文字目から1文字分をなしにする」、と
いう意味の式ということで正しいでしょうか。
その場合、*1というのは、どういった役割をしているのでしょうか?
×1のことでしょうか?
えくせる青年さんの教えてくださった
=IF(COUNT(A1*1),A1,REPLACE(A1,2,1,""))
で、これまでCOUNT関数というのは、数を数える関数だとばかり思っていました。
COUNT(A1*1)の部分は何を意味しているのでしょうか?
米印はワイルドカードというやつでしょうか?
いっぱい質問してしまって申し訳ありません。
ちなみにエクセル青年さんのご質問の
知りたいものは関数だけか?ということですが、
ほかに何があるのかあまりわかっていない状況です・・・(><)
数値に対するアスタリスク「*」は乗算です。 文字列に対する「*」はワイルドカードです。
で、エクセルはちょっとややこしいのですが、「文字列の数字」に対して演算を行うと「数値」になります。
RPLACE関数は「文字列」を返す関数で、この場合A1の2文字目から1文字を""(空白)に置き換えた「文字 列」になります。 それだけだと、「数値」として認識されないので、先程の法則を使って*1をすることで数値にしています。
Value(Rplace()) でも同じ結果が得られます。
COUNT関数は「数値のセル」をカウントします。 IF関数のTure Falseの判定は 1 0(内部的には0でなければTureでしたっけ?)なので、COUNT(A1) が1の場合はTure、そうじゃなければFalseを返します。 わざわざCOUNT(A1*1)としているのは、そのセルにある数字が本当に数値として入っているかわからな いための工夫です。
試しに、セルの書式設定で文字列に直したあと、適当な数字1234でも打って、ISNUMBER関数で判定して みてください。 FALSEが買ってくるはずです。
Maronさんを否定するわけでは決してありませんが、場合によってはえくせる青年さんの数式のほうがよりただしい結果を得られると思います。
(通りすがり)
お礼が遅れましたが、本当にありがとうございます。
とてもわかりやすく教えていただき、
非常に勉強になりました。
みなさん親切で、感謝します。
これで仕事が一個、効率化されそうです。
ありがとうございました。
(しゅうちゃん)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.