【先着1,000名様!】1,000円分をプレゼント!

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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelでカタカナ・ひらがな・英数字の抽出

Excelでデータの中から文字種類別にデータを抽出す方法を教えてほしいです。

(例)
   A    B                 C
1  番号  書名               著作名
2  1    ソロモンの偽証 第1部   宮部みゆき
3  2    悪の教典            貴志祐介
4  3    犯罪               フェルディナント・フォン・シーラッハ/酒寄進一
5  4    忘れられた花園        ケイト・モートン/青木純子
6  5    LOVELESS(ラブレス)    桜木紫乃
7  6    Harry Potter          Rowling, J. K.

例えば、上のデータからCの列の中からカタカナ(全角/半角)を探し出し方法はありますか?
データ(フェルディナント・フォン・シーラッハ、ケイト・モートン)だけ抜き出すのではなく
どこのセルにデータがあるのか分かるようにしたいです。

   A    B                 C
4  3    犯罪               フェルディナント・フォン・シーラッハ/酒寄進一
5  4    忘れられた花園        ケイト・モートン/青木純子

のように表示できるようになるのが理想ですが
C4、C5など、データの入っているセルが分かるようになればいいです。

カタカナだけでなく、英語・ひらがな(カタカナ・アルファベットがないもの)でも同様に探せるようにしたいです。
カタカナや英語は全角・半角入り混じっています。
一つセルに全角半角が混在している場合もあります。
B6のようにカタカナや英語が混じっているセルや
C4、C5のようにカタカナと漢字(ひらがな)が混じっているセルもあります。
関数は簡単なのは分かりますが、マクロはさっぱりです。
コードや関数を解説つきで提示していただけると幸いです。

Excelでデータの中から文字種類別にデータを抽出す方法を教えてほしいです。

(例)
   A    B                 C
1  番号  書名               著作名
2  1    ソロモンの偽証 第1部   宮部みゆき
3  2    悪の教典            貴志祐介
4  3    犯罪               フェルディナント・フォン・シーラッハ/酒寄進一
5  4    忘れられた花園        ケイト・モートン/青木純子
6  5...続きを読む

Aベストアンサー

こんばんは!
一例です。

C列セルに全角カタカナ・半角カタカナ・半角アルファベット・全角アルファベットがある場合
その行を非表示のするVBAの一例です。
データは2行目以降にあるとします。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

尚、行を再表示させる必要があると思いますので、再表示のVBAも一緒に載せておきます。


Sub 対象行非表示() 'この行から
'変数の宣言(i,k,Mは長整数型・strは文字列型)
Dim i As Long, k As Long, M As Long, str As String

'iは2行目からA列の最終行まで(ループ)
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row

'kはC列セルの1文字目から最終文字まで(ループ)
For k = 1 To Len(Cells(i, 3))

'C列セルを一文字ずつ変数(str)に置き換える
str = Mid(Cells(i, 3), k, 1)

'もし strが 全角カタカナ・半角カタカナ・半角アルファベット・全角アルファベットの場合は
If str Like "[ア-ン ア-ン A-z A-z]" Then

'Mを一つずつ増やしていく
M = M + 1
End If

'次の文字へ(セル内の最終文字まで)
Next k

'もしMが1以上の場合(全角カタカナ・半角カタカナ・半角及び全角アルファベットがある場合)
If M > 0 Then

'その行を非表示にする
Rows(i).Hidden = True
End If

'Mの値を「0」に!
M = 0

'次の行へ(最終行まで)
Next i
End Sub

Sub 再表示()
Rows.Hidden = False
End Sub 'この行まで

※ コードをコピー&ペーストした場合
>If str Like "[ア-ン ア-ン A-z A-z]" Then
の行の ア-ン が両方とも全角になっているかもしれませんので、
貼り付け後コードを確認してみてください。
もし両方とも全角になっていたら、どちらかの「ア-ン」のカタカナ部を半角にしてください。

※ まず「対象行非表示」のマクロから実行してみてください。

参考になりますかね?m(_ _)m

こんばんは!
一例です。

C列セルに全角カタカナ・半角カタカナ・半角アルファベット・全角アルファベットがある場合
その行を非表示のするVBAの一例です。
データは2行目以降にあるとします。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

尚、行を再表示させる必要があると思いますので、再表示のVBAも一緒に載せておきます。


Sub 対象行非表示() 'この...続きを読む

Qエクセル:マクロ「Application.CutCopyMode = False」って?

エクセルのマクロを記録していると

「Application.CutCopyMode = False」

というものがよく出てきますが、これは何でしょう?
どういう意味のものかわかりません。
削除しても差し支えないのもでしょうか?

Aベストアンサー

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
Range("A1").Select
Selection.Copy
Range("A2").Select
Application.CutCopyMode = False
ActiveSheet.Paste ← ココでエラー
------------
ご自分で、セルをコピーしてみると分かると思いますが、コピーした範囲が点線で点滅されます。
「Application.CutCopyMode = False」をすると、
その点滅がなくなります。

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
...続きを読む


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

人気Q&Aランキング