• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル2003でセルの検索・抽出について)

エクセル2003でセルの検索・抽出方法

このQ&Aのポイント
  • エクセル2003で特定の文字列を含むセルを簡単に見つける方法を教えてください。
  • A列には漢字・ひらがな・カタカナ・半角英数字・半角カナが入り混じった文字列があります。
  • 漢字・カタカナ・ひらがな・半角カナを含むセルのみを抽出する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

 ANo.3です。御補足頂き有難う御座います。 >特殊な記号やアラビア文字やロシア文字は使用していません。 >「-」(ハイフォン)、「/」(スラッシュ)、「+」(プラス)、「-」(マイナス)、「×」、「÷」、「.」(小数点)は翻訳には関係ないので無視で大丈夫です。  空白に関しては触れておられない様ですが、英数字と空白のみからなる文字列の場合は「○」にすべきなのでしょうか、それとも「×」にすべきなのでしょうか?  もし、「×」にすべきなのでしたら、ANo.3て挙げた関数の中の "0123456789abcdefghijklmnopqrstuvwxyz" という部分の何処か適当な所に半角スペースを1つ追加されて、例えば =IF(SUMPRODUCT(ISERROR(FIND(MID(ASC(LOWER($A1)),ROW(INDIRECT("A1:A"&LEN($A1))),1)," 0123456789abcdefghijklmnopqrstuvwxyz"))*1),IF($A1="","","○"),"×") 等の様に修正して下さい。  又、もし、「○」にすべきなのでしたら、ANo.3て挙げた関数のままでOKです。

その他の回答 (5)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.5

#2です。 半角カナがあるのね。 B1に、 {=IF(ISERROR(MATCH("○",IF(CODE(MID(A1,ROW($A$1:$A$19),1))>160,"○","×"),0)),"×","○")} で、どうでしょう。 配列数式なので、Ctrl+Shift+Enterで、入力します。式の前後に{ }がつきます。 文字コードが、Shift JISならこれでいいと思うが。

NOBU_O
質問者

お礼

回答ありがとうございます、やってみます。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! 条件に >半角カナを含む・・・ とありますので、これがネックになると思います。 半角カナがなければ文字数とバイト数の比較で簡単に導き出せますが、 半角カナは1バイトになりますので、 半角英数と一緒になってしまいます。 そこでVBAになってしまいますが、一例です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i As Long, k As Long, M As Long Dim str As String For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row For k = 1 To Len(Cells(i, 1)) str = Mid(Cells(i, 1), k, 1) If Not str Like "[A-z A-z 0-9 0-9]" Then M = M + 1 End If Next k If M > 0 Then Cells(i, 2) = "○" Else Cells(i, 2) = "×" End If M = 0 Next i End Sub 'この行まで ※ B列に○・×表示としています。 参考になりますかね?m(_ _)m

NOBU_O
質問者

お礼

回答ありがとうございます、マクロやってみました。 分類がしやすく見やすくなりました、ありがとうございます。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 要するに半角の英数字と全角の英数字のみの文字列の場合は「×」で、それ以外の場合は「○」を表示させたいという事なのでしょうか?  それでしたら、B1セルに次の関数を入力してから、B1セルをコピーして、B2以下に貼り付けると宜しいかと思います。 =IF(SUMPRODUCT(ISERROR(FIND(MID(ASC(LOWER($A1)),ROW(INDIRECT("A1:A"&LEN($A1))),1),"0123456789abcdefghijklmnopqrstuvwxyz"))*1),IF($A1="","","○"),"×")  それとも、漢字・カタナカ・ひらがな・半角カナを含む場合にのみ「○」を表示し、例え、特殊な記号や、アラビア文字やロシア文字等の「漢字・カタナカ・ひらがな・半角カナ」ではない文字や記号を含んでいた場合であっても、「漢字・カタナカ・ひらがな・半角カナ」を含んでいない限りは「×」を表示させたいのでしょうか?  それから、文字列の中に空白が含まれている場合や、途中に改行がある場合や、「-」(ハイフォン)、「/」(スラッシュ)、「+」(プラス)、「-」(マイナス)、「×」、「÷」、「.」(小数点)等の各種記号や、各種の括弧の類等が含まれている場合には、どう扱えば宜しいのでしょうか?

NOBU_O
質問者

お礼

回答ありがとうございます。

NOBU_O
質問者

補足

特殊な記号やアラビア文字やロシア文字は使用していません。 「-」(ハイフォン)、「/」(スラッシュ)、「+」(プラス)、「-」(マイナス)、「×」、「÷」、「.」(小数点)は翻訳には関係ないので無視で大丈夫です。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

B1に、 =IF(LENB(A1)=LEN(A1),"×","○") として、下にフィルドラッグ。

NOBU_O
質問者

お礼

回答ありがとうございます。

回答No.1

一つのセルに入力されている文字列の文字数が分かりません。 また、プログラムを組まずに式だけで判定するのには限界があります。 そこで、与えられた条件で、最初の16文字だけで判断する式を作ってみました。 文字コードが165以上である文字(与えられた条件下で、半角英数ではない文字)を数え、その文字数が1以上なら○を表示し、ゼロなら×を表示します。 入力されている文字列の文字数が16未満でもゼロでもきちんと判断します。 セルA2に対象の文字列が入力されているとして、例えばセルB2に以下の式を入れてみてください。、 =IF(IFERROR(IF(CODE(MID(A2,1,1))>165,1,0),0)+IFERROR(IF(CODE(MID(A2,2,1))>165,1,0),0)+IFERROR(IF(CODE(MID(A2,3,1))>165,1,0),0)+IFERROR(IF(CODE(MID(A2,4,1))>165,1,0),0)+IFERROR(IF(CODE(MID(A2,5,1))>165,1,0),0)+IFERROR(IF(CODE(MID(A2,6,1))>165,1,0),0)+IFERROR(IF(CODE(MID(A2,7,1))>165,1,0),0)+IFERROR(IF(CODE(MID(A2,8,1))>165,1,0),0)+IFERROR(IF(CODE(MID(A2,9,1))>165,1,0),0)+IFERROR(IF(CODE(MID(A2,10,1))>165,1,0),0)+IFERROR(IF(CODE(MID(A2,11,1))>165,1,0),0)+IFERROR(IF(CODE(MID(A2,12,1))>165,1,0),0)+IFERROR(IF(CODE(MID(A2,13,1))>165,1,0),0)+IFERROR(IF(CODE(MID(A2,14,1))>165,1,0),0)+IFERROR(IF(CODE(MID(A2,15,1))>165,1,0),0)+IFERROR(IF(CODE(MID(A2,16,1))>165,1,0),0)>0,"○","×")

NOBU_O
質問者

お礼

回答ありがとうございます、やってみます。

NOBU_O
質問者

補足

仕事で日本語の図面を英語に翻訳することになりまして(Autocad使用) 翻訳といっても簡単な単語を英語にするだけなのですが 図面内に大量の文字がランダムに配置されているので 日本語のみを探すのが大変ですし漏れも出るので いったんすべての文字をエクセルに吸い取ってから 日本語のみ英語に変えて図面に戻そうかと思いました。 ただ、漢字とひらがなと全角カナだけなら簡単なのですが 半角カナが混じっていたのでちょっと難しいなと思い質問させていただきました。

関連するQ&A