プロが教えるわが家の防犯対策術!

例えばセルA1の内容を調べるとして、PHONETIC(A1)=A1なら、セルA1の内容はカタカナだと判定していましたが、最近、これでは不十分であることがわかりました。
そこで、セルA1の内容が、全角カタカナかどうかを調べるエクセル関数又はマクロコマンドがあるはずだと信じて探していますが、見つかりません。TYPE関数では、セルの内容が数値か文字列かを調べられますが、その文字列がカタカナか英数字かなどを調べられません。ご存知の方はお教えください。

A 回答 (5件)

 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)
    • good
    • 0

No3です。


マクロを入力した後は「開発」タブの「デザインモード」がアクティブ状態になっていますのでクリックしてアクティブ状態を解除してください。
    • good
    • 0

セルに書かれた文字のすべてが全角のカタカナであるかどうかを判定することは関数では難しいでしょう。


マクロによる判定を次のようにして行うことができます。
例えば「開発」タブの「挿入」から「コマンドボタン」を選択しシート上に四角を描くようにします。
コマンドボタンを右クリックして「コードの表示」をクリックします。
表示の画面に次のコードを入力します。

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セルまでに入力された文字列について判定できます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。根気よくセル内の文字を1文字ずつ取り出して、そのコードを調べるのですね。
ちょっと実用的ではありません。

お礼日時:2012/08/13 08:55

◆これでいかがでしょう


=SUMPRODUCT((CHAR(ROW($9505:$9590))=MID(A1,COLUMN(1:1),1))*1)=LEN(A1)
    • good
    • 0
この回答へのお礼

実用できませんでしたが、9505行目から9590行目がどうしてこうなるのか不思議です。
ありがとうございました。

お礼日時:2012/08/13 09:10

 確認したいのですが、セル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)
    • good
    • 0
この回答へのお礼

PHONETIC(A1)=A1 と質問で書いているように、セルの文字列が英数字またはカタカナでのみであることを確認したいのです。
ご検討ありがとうございました。

お礼日時:2012/08/13 09:03

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

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