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

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

エクセル2003でセルの検索・抽出について

A列に漢字・ひらがな・カタカナ・半角英数字・半角カナが入り混じった文字列が入力されていまして、 漢字・カタナカ・ひらがな・半角カナを含むセルのみ簡単に見つけたいのですが、どうしたらいいでしょうか?        A列        B列 1行目 123あ456a       ○ 2行目 123456AB       × 3行目 123亜456a       ○ 4行目 123ア456A       ○ 5行目 ABCD567        × 上記の例でいくと、2&5行目以外を抽出して、分かりやすく見つけたいのです。 たとえば2&5行目以外のセルに色をつけるとか、B列に○または×を入れるとかでかまいません。 逆に2&5行目に色をつける、でもOKです! どうぞよろしくお願いいたします。

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

  • ベストアンサー
  • 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

  • 複数セルから特定の文字を検索して、その対象セルを抽出したい

    エクセルで関数、VBAを使用して、下記のようなDATA抽出を行ないたいのですが、どなたか、ご指導いただけないでしょうか。 たとえば、2種のシートが、各々、 <シート1>   列A   列B 行1 A1 ABCD-123 行2 B23 EFGH-456 行3 C456 あいうえお <シート2> 列A 列B 列C  列D  列E 行1 A1 A2 A3 行2 B23 C5 A4 行3 A5 B2 C456 ・・・・・・・となっている場合、 <シート2> の列D  行1 へ "A1"と入力(記載)がある場合、列Eに   ”ABCD-123”と表示(抽出)を行ないたい。 セルには、文字、数字、記号が入ります。 よろしくお願い致します。

  • エクセルで、(あ)ひらがな入力や(ア)全角カナで入力をしても、、

    エクセルで、(あ)ひらがな入力や(ア)全角カナで入力をしても、そのセルには、常に、半角のカナ(aア)で表示させることは出来るでしょうか?

  • 範囲内である文字列が含まれていたら,違うセルに表示させる

    A4:A10という範囲(同じ行)の中に,ある文字列が含まれていたら,違うセルに○と表示する,それ以外は空欄という式をつくるにはどうしたら良いでしょうか。 文字列は同じ行の中で同じ文字が1回以上登場することはありません。 A B C あ い う か き く・・・ D E F い え お き く こ・・・ G H I う お い こ け き・・・ 1行目の文字列(あいうかきく)の行の中に「あ」が含まれていたらAセルにアと表示し, 3行目文字列(うおいこけき)に「う」があったらIにウと表示する。それ以外は空欄。 アルファベットのセルには色をつけたりといった書式条件ではなく特定の文字列を表示させたいです。 「IF(B42="あ","ア",""」の場合,B42のセルの中身が「あ」だったらアと表示する,それ以外は空欄。という意味になりますでしょうか? これで,B42セルだけではなくB42:B50という範囲の中に「あ」という文字列があったら…と思いましてご相談です。宜しくお願いします。

  • エクセルのマクロについて質問です。

    あセルを選択すると、その列の行を一番下まで書き出すようにしたいと思っています。 A1セル=ひらがな E2セル以降=書出し B列 ひらがな ←タイトル(B1セル) あいうえお かきくけこ さしすせそ C列 カタカナ←タイトル(C1セル) アイウエオ カキクケコ サシスセソ D列 英文字←タイトル(D1セル) abcd efgh ijkl 縦になっててちょっと見づらいですが、このような場合、A1の“ひらがな”というワードが入っていて、マクロを実行するとその下の行である “あいうえお” “かきくけこ” “さしすせそ” と、E2以降に表示するようにしたいのですが、どのように考えてコードにしたらいいのか分からないので教えていただけないでしょうか。

  • エクセル ある文字列が含まれるセルを検索する方法

    初めて問い合わせします。大量のデータを検証しなければいけません。 関数などで方法を教えて頂ければ幸いです。 1セルに対し、1セルを検索する方法はわかっております(countifやifを使って) でも、セル単位ではなく文字列単位での検索方法を知りたいと思います。 わかりづらいかもしれませんが、現状をお知らせします。 シート1「登録データ一覧」(5万件) A列1行目 ア社 A列2行目 イ社 A列3行目 ウ社 A列4行目 エ社 A列5行目 ☆ーア社 A列6行目 ウー☆社 シート2「検索したい社名一覧」(500社) A列1行目 ア社 A列2行目 イ社 A列3行目 ウ社 <出したい結果> (1)検索したい会社が、シート1上で何社登録があるか ア社→【答え:2社】 イ社→【答え:1社】 ウ社→【答え:2社】 (2)登録データ一覧上、検索したい会社が存在するか ア社→【答え:○】 イ社→【答え:○】 ウ社→【答え:○】 エ社→【答え:×】 ☆ーア社→【答え:○】 ウー☆社→【答え:○】 よろしくお願いします。

  • エクセル 抽出

    どうぞ宜しくお願いします A1B1C1のセルが結合してあり セルの中にはカタカナ、ひらがな、漢字、記号、アルファベット、が 30~60文字ぐらい記入されています。 その中のアルファベットが、1文字だけ大文字で必ず書いてあります。 大文字ではありますが、半角の場合も全角の場合もあります そのアルファベットの1文字だけE1に抽出表示させたいのです。 A1B1C1にはアルファベットも残したまま1文字だけE1に抽出表示させたいのです。 出来るのであれば、ですが、大文字の半角で表示させたいのです。 PC初心者です、よろしくお願いします

  • Excel(2000)で行毎にセルをみて、値を返す

    例えば、以下のようなデータがあったとして、各行毎に左から見た結果、最初にデータがあったセルの列の1行のセルの値を各行のG列に返したい。 ______A__B__C__D__E__F__G__ 1行_ア__イ__ウ__エ__オ__カ____ 2行_1__3__5__2__4__1__ア__ 3行_____2__5__1__5__4__イ__ 4行_____________2__8__2__エ__ 5行_____2______2__1__4__イ__ 6行_________5______2______ウ__ G列に結果。 例えば、G3のセルに何らかの関数を入れて、A3~F3を左から見た結果、B3に2というデータがあるので、その列の1行であるB1の値、イをG3に返すといったないようです。 _ は、スペースをとるためのものです。 実際のデータは500行あり、各行の検索する列数は23列あります。 よろしくお願い致します。

  • エクセルシートの文字列加工について

    エクセルのシートのA列に"全角ひらがな漢字"の文字列と"半角英数"の文字列を含むセルが縦に並んでいます。約200行。 ■この中から、"全角ひらがな漢字"の文字列を右となりのB列に、"半角英数"の文字列をさらに右となりのC列に、それぞれコピーしたいのですが、関数・マクロなどでいい方法がありましたら教えて下さい。 ■それから、半角英数文字列のC列から、""で囲まれた文字列のみをさらにD列にコピーしたいのです。 文字列の長さが統一されていれば、比較的簡単なのですが、今回は文字列の長さが不規則です。よろしくお願いします。

  • エクセル2010 検索と抽出

    EJ~ETセルにデータがあります。 A1に入っている文字をEJ列から探し、同じ文字に該当したらその行のEK列~ET列を、Bセル~Lセルまでに抜き出したいのです。 ちなみに、該当する行全てをB~Lセルの下行にずっと抜き出していく形です。 また、上記をワンセットにして、L、W、AH、AS、BD、BO、BZ と 同じ作業があります。 ちなみに、Ej~ETセルのデータは4万行ほどありますので、負担の掛からないスピードで抜き出せる方法が理想です。 併せて、A1に入る文字は毎回、変わりますので随時抽出してくる方法が必要です。 L以降も同様です。 詳しい方、よろしくお願い致します。

  • エクセル VBA セル内の文字検索について

    XP microsoft visual basic 6.0 です A1からA10に書かれた文章(平仮名、カタカナ、漢字、数字、記号、含む)の中に 0から始まる半角8桁の数字があれば 取り出し B列に書き出す VBAを用いてこのようなことは可能でしょうか ※8桁の数字は文章内の何文字目にあるか決まっていない ※文章内に0から始まる8桁の数字が複数あることはない、が、0から始まり記号を含む8桁の文字列はある ご教授ください

専門家に質問してみよう