アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excelで、セルの中に以下の条件の文字が1つでも入っていたら、その右セルに○。そうでなければ、×を付ける方法を教えていただけますか。
(1)半角カナ
(2)全角の数字
(3)全角のローマ字

(例)
Kタ99 ○
U99999 ○
BBBBB9 ○
ヤ77777AAAAA ○
Kタ99 ×

A 回答 (9件)

数か月前にも似たような質問をされて、いくつかの回答もついているのに、ご質問者は何の反応なさらずに、締め切りになっています。


https://oshiete.goo.ne.jp/qa/13687746.html
今回も同じことになるのでしょうか?
    • good
    • 0

エクセルのワークシート関数は苦手なので ユーザー関数で。



Function CheckCharaType(strCharacter As String) As String
 If Len(strCharacter) > 0 Then
  If strCharacter Like "*[0-9A-Za-zヲ-゚]*" Then
   CheckCharaType = "○"
  Else
    CheckCharaType = "×"
  End If
 End If
End Function

B1セルに
=CheckCharaType((A1))
のように。

引数が 文字列になっているので、
ワークシート以外でも使うことができます。
    • good
    • 1

考え方は、既出の回答と同じように、1文字づつ全ての文字をチェックする方法です。

既に、他の回答者さんのご説明のとおり、

半角カナ文字であれば、文字コードが
「ヲ(166)」~「゚(223)」・・・(a)
全角の数字であれば、
「0(9008)」~「9(9017)」・・・(b)
全角のローマ字であれば
「A(9025)」~「z(9082)」・・・(c)

というそれぞれの範囲にあるので、添付画像では、B2セルに、

=IF(ISERROR(LOOKUP(1,0/FIND(CHAR(ROW($166:$223)),A2)))*ISERROR(LOOKUP(1,0/FIND(CHAR(ROW($9025:$9082)),A2)))*ISERROR(LOOKUP(1,0/FIND(CHAR(ROW($9008:$9017)),A2))),"×","〇")

という数式を入れて、下方向へコピーしています。

数式を簡単に説明すると、
まず、FIND関数を用いて文字列の中に上記(a)(b)(c)の文字があるのかをチェックします。FIND関数はそれらの文字が見つかればその位置、見つからなければ#VALUE!を返します。従って「0/FIND(複数の検索値,検索対象)」とすると、「0と#VALUE!の配列」が返ります。

LOOKUP関数を組み合わせて「=LOOKUP(1,0/FIND(複数の検索値,検索対象))」とすると、検索したい上記(a)(b)(c)のうち、何らかの文字がヒットしていれば0、ヒットしていなければ#N/A!が返ることになります。

そこで、ISERROR関数と組み合わせて「=ISERROR(LOOKUP(1,0/FIND(複数の検索値,検索対象)))」とすると、上記(a)(b)(c)のうち何れの文字もヒットしていなければ「TRUE」、ヒットしていれば「FALSE」が返ります。

これを、上記(a)、(b)、(c)それぞれの文字についてチェックするので「ISERROR~」を3回用いてそれぞれチェックし、全て「TRUE」なら何れの文字も含まれないので「×」、何らかの文字が含まれるなら「○」を返すということになります。
「Excelでの判別方法」の回答画像7
    • good
    • 1

VBAで良ければ、添付図のようなユーザー定義関数 MyCheckを


つくり、その関数を設定すると○×が簡単に設定できます。
B1のセルに
=MyCheck(A1) と入力し、下へオートフィルでコピーすれば完了です。

ユーザー定義関数で良ければ、その旨補足してください。
「Excelでの判別方法」の回答画像6
    • good
    • 0

こんばんは



既に回答があるように、1文字ずつチェックするしかないですね。

例えば、半角カナ文字であれば、文字コードが「ヲ(166)」~「゚(223)」の範囲にあるかをチェックすれば良いので、仮にA1セルに対象の文字列があるとすれば
=SUMPRODUCT((165<CODE(MID(A1,ROW(OFFSET(A1,0,0,LEN(A1))),1)))*(CODE(MID(A1,ROW(OFFSET(A1,0,0,LEN(A1))),1))<224))
で、判定できます。
式の計算結果は、判定対象範囲の文字が存在すればその文字数になります。
(範囲にないことを判定したければ、0が返ることを確認すれば良いでしょう)

上記の式は文字コードで判定していますが、直接文字で「ア~ヲ」の範囲かどうかを比較しても可能です。
(1種類の範囲だけならその方が式は短くなります。)
(ただし、半角カタカナの場合、文字コード順ではなくあいうえお順で判断されるようです。)
そのようなこともあり、文字コード化したほうが扱いやすいので、上式ではコード化して比較しています。

また、チェックしたい文字範囲が複数ある場合には、上式を繰り返しても可能ですが、それだと範囲分だけ繰り返すので式が大変長くなってしまいます。
一方で、エクセルでは2次元迄の配列計算が可能ですので、比較対象範囲を配列化すれば、ほぼそのままの長さの式で判定可能です。
(範囲の文字コードの分だけは長くなりますが・・)
上式では対象文字を1文字ずつに行方向(=1列内)に展開していますので、比較範囲を列方向(=1行内)に展開するようにすれば、ほぼそのままの要領で複数範囲を判断することが可能です。
(同じ方向(=行と行や列と列)に展開すると、上手くいきませんのでご注意)
    • good
    • 0

誤記訂正

「Excelでの判別方法」の回答画像4
    • good
    • 0

条件が不明確な点があるので、確認です。



○:半角のカナ・カナ記号 (JIS X 0201)
   。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソ
  タチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚

○:全角の英字・数字・記号 (JIS X 0208)
   !”#$%&’()*+,-./0123456789:;<=>?
  @ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_
  ‘abcdefghijklmnopqrstuvwxyz{|}~

×:半角の英字・数字・記号 (JIS X 0201)
   !"#$%&'()*+,-./0123456789:;<=>?
  @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
  `abcdefghijklmnopqrstuvwxyz{|}~

×:全角のカナ・カナ記号 (JIS X 0208)
   。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソ
  タチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜

×:その他の全角文字(平仮名・漢字・ギリシャ文字・キリル文字・全角記号など)

---------

上記の条件(記号を含める、全角文字か半角文字かだけを識別する)でよければ、以下の方法でできると思います。

(1) B列の元データをASC関数で半角文字に変換し、作業用のC列に置く。
   C列の式 → =ASC(B列の元データ)
(2) C列全体を選択して「コピー」し、そのまま「値貼り付け」する。
(3) C列に「ふりがな」を設定する。種別は「全角カタカナ」を指定する。
(4) B列の元データとC列の「ふりがな」が不一致かどうかを判定する。
   D列の式 → =IF(B2=PHONETIC(C2),"×","○")

半角カナ・半角カナ記号・全角英数字は「使用不可」としたいという一般的なケースなら、この方法で「×=可、○=不可」と読み替えればOKです。

もし、半角カナ記号は×としたい、英数字以外の全角文字も×としたい、という場合は、この方法は使えません。
下図の赤○が「○」でよいか、「×」がよいか、という確認です。
 
(半角/全角を分かりやすくするため等幅フォントを使用しています)
  ↓
「Excelでの判別方法」の回答画像3
    • good
    • 0

(1)半角カナ


https://detail.chiebukuro.yahoo.co.jp/qa/questio …

(2)全角の数字(3)全角のローマ字
https://detail.chiebukuro.yahoo.co.jp/qa/questio …

http://office-qa.com/Excel/ex134.htm

これらを組み合わせる
    • good
    • 0

文字列の先頭から一文字ずつ、


それに該当するか否かを判断すればよいです。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A