dポイントプレゼントキャンペーン実施中!

(1)「もしもA1の最初の文字がアルファベットだったら(数字以外だったら)~する」
(2)「もしもA1が文字列だったら~する」

いずれかの式をご存知の方、いらっしゃいませんか?

極力(1)の回答を希望します。
宜しくお願いします。

A 回答 (9件)

こんなのでどうでしょうか。



=IF(ISNUMBER(LEFT(A1,1)*1),"数字です","数字以外です")
    • good
    • 0
この回答へのお礼

今回の回答、誠にありがとうございました。
こちらの条件を考えて、結果この関数を使わせていただきましたので、ポイントをつけさせていただきます。

結論を見れば、「A1の最初の文字が数字だったら」という式を使っているんですね。最初の質問が「文字列だったら(数字以外であれば)」と書いているのに。

皆さん、私が書いた通りの式を考えてくださっていたので肩身が狭いです。また、最初の条件を人に伝える事の深さも(少し)考えました。

お礼日時:2003/07/18 00:26

(1)に対する回答のひとつ。


VBEの標準モジュールに下記を貼りつける。
Function isalpha(s)
s = Mid(s, 1, 1)
Select Case Asc(s)
Case 65 To 90
isalpha = True
Case 97 To 122
isalpha = True
Case Else
isalpha = False
End Select
End Function
そしてセルに
=IF(ISALPHA(C1),"AL","non-AL")
のように関数として使ってください。(ユーザー関数)
    • good
    • 0
この回答へのお礼

ご回答、誠にありがとうございました。
これは、次回何かあった時に応用できそうな気がします。
ありがたいです。

お礼日時:2003/07/17 23:53

(2)に対して、ISTEXTと言う関数がエクセルにあります。

C1セルに文字・数字・記号が入っているとき
D1に
=IF(ISTEXT(C1),"text","non-text")
と入れると、文字と記号のとき、textと表示されます。
1sなどは文字です。1.1や2,000はNon-textです。
    • good
    • 0
この回答へのお礼

ご回答、誠にありがとうございました。
本当に勉強になりました!

お礼日時:2003/07/17 23:55

No.3のarukamunです。



シンプルな方法がありましたので、再投稿します。

=IF(CODE(UPPER(A1))<>CODE(LOWER(A1)),TRUE,FALSE)

で、1バイト2バイト関係なく、1文字目がアルファベットならTRUE、そうでなければFALSEです。
ただ、(数字以外だったら)ということであれば、

=IF(NOT(ISNUMBER(A1)),TRUE,FALSE)

でいかがでしょうか?
    • good
    • 0
この回答へのお礼

2回目の回答、深謝です!!!
この項、二つ目の関数に近いものを使ったので、次点をつけさせていただきます。
(こんなにたくさんの回答をいただけるとは、正直思っていなかったです)

お礼日時:2003/07/18 00:18

訂正します。


=IF(OR(AND(CODE(A1)>=65,CODE(A1)<=90),AND(CODE(A1)>=97,CODE(A1)<=122)),"~する","しない")
でした。
CODE関数では文字コードを返す関数です。先頭の文字のコードを返すのでLEFT関数はいりませんでした。
大文字のA~Zの文字コードは65~90で
小文字のa~zの文字コードは97~122です。
逆に文字コードから文字を返す関数がCHAR関数です。
さっきCHAR関数で調べ直したら大文字のコードが抜けていました。
応用すれば漢字、ひらがな、数字と条件を変えることができます。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございました。
見たことが無い関数でしたので、勉強になりました!!

お礼日時:2003/07/17 23:57

まず(1)ですが、いろいろ方法はありますが、シンプルにいくなら、



=IF(CODE(UPPER(A1))=CODE(LOWER(A1)),"アルファベットではありません","アルファベットです")

といった感じでしょうか。これはA1セルの内容に対して、アルファベットを大文字化・小文字化する関数を使い、2つの結果が一致しない場合に「アルファベット」と判断します。

#2の方の方法でも良いのですが、CODE関数はどのみち先頭1文字しか判断しませんので、LEFT関数は不要かと思います。また、アルファベット小文字の場合しか想定されていないようですので、大文字の場合の処理を追加する必要があります。

また、A1が数字かどうか判断する場合は次の通りです。

=IF(ISNUMBER(A1),"数字です","数字ではありません")

次に(2)ですが、実はこちらのほうが簡単でして、

=IF(ISTEXT(A1),"文字列です","文字列ではありません")

これだけでOKです。
    • good
    • 0
この回答へのお礼

ご回答、誠にありがとうございました。
分かりやすく書いていただいて感謝しています。
UPPERやLOWERという関数を初めて見ました。
一つの処理にも色々な考え方があるのですね。

お礼日時:2003/07/18 00:11

こんにちは



では(1)の例として、
AからZであれば、

=IF(AND(CODE(A1)>=CODE("A"),CODE(A1)<=CODE("Z")),TRUE,FALSE)

でTUREとFALSEは真の時、偽の時の処理を入れてください。

aからzも入れるのであれば、

=IF(OR(AND(CODE(A1)>=CODE("A"),CODE(A1)<=CODE("Z")),AND(CODE(A1)>=CODE("a"),CODE(A1)<=CODE("z"))),TRUE,FALSE)

2バイトのAからZやaからzも入れるのであれば、

=IF(OR(AND(CODE(ASC(A1))>=CODE("A"),CODE(ASC(A1))<=CODE("Z")),AND(CODE(ASC(A1))>=CODE("a"),CODE(ASC(A1))<=CODE("z"))),TRUE,FALSE)

にしてください。
もう少しシンプルなものがあれば、再投稿します。
    • good
    • 0
この回答へのお礼

ご回答、誠にありがとうございました。
色々なパターンを考えていただいて、感謝、です!

お礼日時:2003/07/18 00:00

1番は


=IF(AND(CODE(LEFT(A1,1))>=97,CODE(LEFT(A1,1))<122),"何何する","何もしない")
です。
    • good
    • 0
この回答へのお礼

ご回答、誠にありがとうございます!
こういう関数があった事自体、知らなかったです。
本当に勉強になりました。

お礼日時:2003/07/18 00:02

最初の一文字は


LEFT(A1,1)
これを 数字に変換するのが
VALUE
これで VALUE(LEFT(A1,1))
だけど 文字だったら エラーが出る。
数値だったら エラーは 出ない。
ので ISERRORで 判断する。エラーだったら TRUEになります。

ISERROR(VALUE(LEFT(A1,1)))

=IF(ISERROR(VALUE(LEFT(A1,1))),文字の時の処理,数値のときの処理)

をそれぞれ入れればいいです。
    • good
    • 0
この回答へのお礼

ご回答、誠にありがとうございました。
分かりやすく書き込みいただいてとても感謝しています。
私も、このように回答を書こうと思います。

お礼日時:2003/07/18 00:06

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