- 締切済み
エクセルでセルのデータがカタカナかどうか調べたい。
例えばセルA1の内容を調べるとして、PHONETIC(A1)=A1なら、セルA1の内容はカタカナだと判定していましたが、最近、これでは不十分であることがわかりました。 そこで、セルA1の内容が、全角カタカナかどうかを調べるエクセル関数又はマクロコマンドがあるはずだと信じて探していますが、見つかりません。TYPE関数では、セルの内容が数値か文字列かを調べられますが、その文字列がカタカナか英数字かなどを調べられません。ご存知の方はお教えください。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- kagakusuki
- ベストアンサー率51% (2610/5101)
ANo.1です。 申し訳御座いません、前述の判定式には一部(入力する数字に)誤りが御座いました。(実用上はあまり影響がある訳ではないと思いますが) 【誤】 SUMPRODUCT(ISNUMBER(FIND(CHAR(ROW(INDIRECT("A9504:A9590"))),A1))*1)=LEN(A1) 或いは SUMPRODUCT((CODE(MID("ア"&A1,ROW(INDIRECT("A1:A"&LEN(A1)+1)),1))>9504)*(CODE(MID("ア"&A1,ROW(INDIRECT("A1:A"&LEN(A1)+1)),1))<9590))-1=LEN(A1) 【正】 SUMPRODUCT(ISNUMBER(FIND(CHAR(ROW(INDIRECT("A9505:A9590"))),A1))*1)=LEN(A1) 或いは SUMPRODUCT((CODE(MID("ア"&A1,ROW(INDIRECT("A1:A"&LEN(A1)+1)),1))>9504)*(CODE(MID("ア"&A1,ROW(INDIRECT("A1:A"&LEN(A1)+1)),1))<9591))-1=LEN(A1)
- KURUMITO
- ベストアンサー率42% (1835/4283)
No3です。 マクロを入力した後は「開発」タブの「デザインモード」がアクティブ状態になっていますのでクリックしてアクティブ状態を解除してください。
- KURUMITO
- ベストアンサー率42% (1835/4283)
セルに書かれた文字のすべてが全角のカタカナであるかどうかを判定することは関数では難しいでしょう。 マクロによる判定を次のようにして行うことができます。 例えば「開発」タブの「挿入」から「コマンドボタン」を選択しシート上に四角を描くようにします。 コマンドボタンを右クリックして「コードの表示」をクリックします。 表示の画面に次のコードを入力します。 Private Sub CommandButton1_Click() For n = 1 To 10 If Range("A" & n) = "" Then Exit Sub myStr = Range("A" & n).Value For i = 1 To Len(myStr) myStr1 = Mid(String:=myStr, Start:=i, Length:=1) Code1 = Asc(myStr1) If Code1 > -31853 Or Code1 < -31935 Then Range("B" & n) = "すべてが全角カタカナではありません" Exit Sub End If Next Range("B" & n) = "すべて全角カタカナです" Next End Sub シート上のコマンドボタンをクリックすればA1セルからA10セルまでに入力された文字列について判定できます。
- maron--5
- ベストアンサー率36% (321/877)
◆これでいかがでしょう =SUMPRODUCT((CHAR(ROW($9505:$9590))=MID(A1,COLUMN(1:1),1))*1)=LEN(A1)
お礼
実用できませんでしたが、9505行目から9590行目がどうしてこうなるのか不思議です。 ありがとうございました。
- kagakusuki
- ベストアンサー率51% (2610/5101)
確認したいのですが、セルA1に入力されている文字列が、完全に全角カタカナのみしか含んでいない場合にのみTRUEとなり、平仮名、漢字、アルファベット、半角カタカナは無論の事、空白や括弧の類、「‐」(ハイフォン)等の記号の類が含まれている場合であってもFALSEとした方が宜しいのでしょうか? それでしたら、次の様な判定式は如何でしょうか? SUMPRODUCT(ISNUMBER(FIND(CHAR(ROW(INDIRECT("A9504:A9590"))),A1))*1)=LEN(A1) 或いは SUMPRODUCT((CODE(MID("ア"&A1,ROW(INDIRECT("A1:A"&LEN(A1)+1)),1))>9504)*(CODE(MID("ア"&A1,ROW(INDIRECT("A1:A"&LEN(A1)+1)),1))<9590))-1=LEN(A1)
お礼
PHONETIC(A1)=A1 と質問で書いているように、セルの文字列が英数字またはカタカナでのみであることを確認したいのです。 ご検討ありがとうございました。
お礼
ご回答ありがとうございます。根気よくセル内の文字を1文字ずつ取り出して、そのコードを調べるのですね。 ちょっと実用的ではありません。