
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のようにカタカナと漢字(ひらがな)が混じっているセルもあります。
関数は簡単なのは分かりますが、マクロはさっぱりです。
コードや関数を解説つきで提示していただけると幸いです。
No.1ベストアンサー
- 回答日時:
こんばんは!
一例です。
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
返事が遅くなってすみません。
If str Like "[ア-ン ア-ン A-z A-z]" Then
の[]内が非表示になるのですがあっていますか?
これだと
J・k・ローリングといった場合に
If str Like "[ア-ン ア-ン]" Thenの場合でも
If str Like "[ A-z A-z]" Thenの場合でも
どちらでも表示されなくて抽出できなくなってしまうので
逆に[]内にあてはまるものを表示するようにしたいのですが
そのようにできますか?
No.6
- 回答日時:
ANo.3です。
>D・E・F・・・と項目が増える場合はどうすればいいのかしら?
それは要するに、Sheet1の元データの表が、A列の「番号」、B列の「書名」、C列の「著作名」だけではなく、D列から右側の列にも他のデータが存在しているという事だと考えて宜しいのでしょうか?
そして、「カタカナ」、「英字」、「漢字/ひらがな」の有無を判定しなければならないのは、C列のセルだけである事には変わりはないと考えて宜しいのでしょうか?
もし、そうだとしますと、その場合には、関数の内容を修正する必要は何も御座いません。
単に、Sheet3のSheet2~Sheet4において、A3セルをコピーして、B3~C3セルに貼り付ける際に、貼り付ける範囲をC3セル止まりにするのではなく、D2、E2、F2、G2・・・・・
にまで拡大するだけで宜しいです。
No.5
- 回答日時:
No.1です!
>[ ]内にあてはまるものを表示するようにしたいのですが
というコトは正反対のコードにしてしまった訳ですね!
ごめんなさい。
前回のコード内の
>If M > 0 Then
を
>If M = 0 Then
に変更してみてください。
これで前回とは全く逆の結果になると思います。
どうも失礼しました。m(_ _)m
No.4
- 回答日時:
関数自体は難しくないけど、考え方が難しい。
ただ、改良は簡単なので。D2セルに
=IF(C2="","",COUNT(FIND(MID(UPPER(JIS(C2)),ROW(A$1:INDEX(A:A,LEN(C2))),1),
"ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴABCDEFGHIJKLMNOPQRSTUVWXYZ")))
[Ctrl]+[Shft] +[Enter] で確定、配列数式。{ }で挟まれる
下へオートフィル
UPPER:大文字にする
JIS:全角にする
MID:1文字ずつ抜き出す
FIND:1文字ずつ検索
COUNT:見つかった文字の数
"ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴABCDEFGHIJKLMNOPQRSTUVWXYZ"
を入れ替えればひらがなにも対応できると思います。

回答りがとうございます。
入力は面倒だけれど、
ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴABCDEFGHIJKLMNOPQRSTUVWXYZ
を入れ替えれば
カタカナのみ
英語のみ
カタカナ英語まじり
フィルターを使ってOを選択すれば漢字・ひらがなのみのデータも
抽出できますね。
関数の説明も細かくしてくださってわかりやすいです。
ありがとうございます。
No.3
- 回答日時:
今仮に、元データの表がSheet1に存在していて、Sheet5のA~C列を作業列として使用して、Sheet2にカタカナを含んだ著者名のデータを抽出した表を、Sheet3に英字を含んだ著者名のデータを抽出した表を、Sheet4にカタカナや英字を含んでいない著者名のデータを抽出した表を、それぞれ表示するものとします。
まず、Sheet5のA2セルに次の関数を入力して下さい。
=IF(SUMPRODUCT((CODE(JIS(MID(Sheet1!$C2&" ",ROW(INDIRECT("Z1:Z"&LEN(Sheet1!$C2&" "))),1)))>9504)*(CODE(JIS(MID(Sheet1!$C2&" ",ROW(INDIRECT("Z1:Z"&LEN(Sheet1!$C2&" "))),1)))<9591)),COUNT(A$1:A1)+1,"")
次に、Sheet5のB2セルに、次の関数を入力して下さい。
=IF(SUMPRODUCT((CODE(JIS(MID(Sheet1!$C2&" ",ROW(INDIRECT("Z1:Z"&LEN(Sheet1!$C2&" "))),1)))>9024)*(CODE(JIS(MID(Sheet1!$C2&" ",ROW(INDIRECT("Z1:Z"&LEN(Sheet1!$C2&" "))),1)))<9083)),COUNT(B$1:B1)+1,"")
次に、Sheet5のC2セルに次の関数を入力して下さい。
=IF(OR(Sheet1!$C2="",COUNT($A2:$B2)),"",COUNT(C$1:C1)+1)
次に、Sheet5のA2~C2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。
次に、Sheet2のA3セルに次の関数を入力して下さい。
=IF(ROWS($3:3)>COUNT(Sheet5!$A:$A),"",INDEX(Sheet1!A:A,MATCH(ROWS($3:3),Sheet5!$A:$A)))
次に、Sheet2のA3セルをコピーして、Sheet2のB3セルとC3セルに貼り付けて下さい。
次に、Sheet2のA3~C3の範囲をコピーして、同じ列の4行目以下に貼り付けて下さい。
次に、Sheet3のA3セルに次の関数を入力して下さい。
=IF(ROWS($3:3)>COUNT(Sheet5!$B:$B),"",INDEX(Sheet1!A:A,MATCH(ROWS($3:3),Sheet5!$B:$B)))
次に、Sheet3のA3セルをコピーして、Sheet3のB3セルとC3セルに貼り付けて下さい。
次に、Sheet3のA3~C3の範囲をコピーして、同じ列の4行目以下に貼り付けて下さい。
次に、Sheet4のA3セルに次の関数を入力して下さい。
=IF(ROWS($3:3)>COUNT(Sheet5!$C:$C),"",INDEX(Sheet1!A:A,MATCH(ROWS($3:3),Sheet5!$C:$C)))
次に、Sheet4のA3セルをコピーして、Sheet4のB3セルとC3セルに貼り付けて下さい。
次に、Sheet4のA3~C3の範囲をコピーして、同じ列の4行目以下に貼り付けて下さい。
以上です。

とても見やすい表示ですね!ありがとうございます!!
ただ、実際のデータはもっと項目もデータの数も多いので
私の足りないお頭だとちゃんと応用できるか多大に不安が・・・
D・E・F・・・と項目が増える場合はどうすればいいのかしら?
=IF(SUMPRODUCT((CODE(JIS(MID(Sheet1!$C2&" ",ROW(INDIRECT("Z1:Z"&LEN(Sheet1!$C2&" "))),1)))>9024)*(CODE(JIS(MID(Sheet1!$C2&" ",ROW(INDIRECT("Z1:Z"&LEN(Sheet1!$C2&" "))),1)))<9083)),COUNT(☆$1:☆1)+1,"")
の☆の部分をD・E・Fってしていけば大丈夫なのかしら??
No.2
- 回答日時:
次のようにしてはどうでしょう。
C列で該当すると思われるセルに色を付けて分かるようにします。
初めのC列を選択します。
「ホーム」タブの「条件付き書式」で「新しいルール」から「数式を使用して…」にチェックをし、数式入力の窓には次の式を入力します。
=LENB(ASC(SUBSTITUTE(C1,"・","")))<>LENB(JIS(SUBSTITUTE(C1,"・","")))
この式では著者名が漢字で二名の場合に・で区切られている場合にがその影響が出ないようにしています。
同じ画面の「書式」をクリックして「塗りつぶし」のタブで黄色などを指定してOKします。
これでカタカナや英語などが入った場合にはそのセルに色が付くことになります。
簡潔な回答ありがとうございます。
B列でやりたいときは、そのままB列で設定すれば大丈夫ですよね?
カタカナ・英語を判別したいだけなら一番分かりやすいですね!
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELでの文字・数字入力の基本について教えてください。 2 2023/05/29 23:17
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Excel(エクセル) exel 漢字・英数字混在セルの入力規則 5 2022/04/03 11:08
- Excel(エクセル) エクセルでのデータの統一に関して リストを作成する際、元データをコピペでリストに転記しており、元デー 2 2022/08/31 15:33
- Windows 10 Windows10の回復環境 2 2023/02/03 19:13
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel2007でカタカナの文字のみを抽出、表示するには?
その他(Microsoft Office)
-
EXCELで、漢字のみ抽出する式を教えてください。
Excel(エクセル)
-
エクセルでセルの中身が漢字かどうか識別する方法は?
Excel(エクセル)
-
-
4
Excelにて、カタカナだけのセルを抜き出す方法は?
Excel(エクセル)
-
5
エクセル ひらがなの文字を抽出
Excel(エクセル)
-
6
エクセルでセルのデータがカタカナかどうか調べたい
Excel(エクセル)
-
7
文字列から英数字のみを抽出する関数
Excel(エクセル)
-
8
エクセルでの漢字、カタカナ、ひらがななどの抽出について
Excel(エクセル)
-
9
エクセル、関数でセル内の半角カタカナ漢字、を分けて他のセルへ表示する方法
Excel(エクセル)
-
10
全角・半角混在の文字列から半角文字のみ取り出す
Excel(エクセル)
-
11
エクセルでアルファベットと日本語の文字列を分割する方法
Excel(エクセル)
-
12
EXCELで、セル内の半角カナのみを削除する関数
Excel(エクセル)
-
13
セル内の文字列が日本語か英語かを厳密に識別したい
Visual Basic(VBA)
-
14
エクセル カタカナの文字を検索したら漢字もヒットしてしまうのですが
Excel(エクセル)
-
15
日本語(ひらがな・カタカナ・漢字)があるか判断する
Excel(エクセル)
-
16
セル内文章から、英数字のみ取り出す関数を教えてください
Excel(エクセル)
-
17
エクセルでひらがな・漢字はそのままでカタカナを全角・英数字を半角にする方法
Excel(エクセル)
-
18
文字列にカタカナがあるかどうかの関数
Excel(エクセル)
-
19
エクセルでセルのデータがカタカナかどうか調べたい。
Excel(エクセル)
-
20
エクセルでアルファベットか数値の判定をしたいのですが
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel関数】UNIQUE関数で"0"...
-
Excelのフィルター後の一番上の...
-
エクセル 上下で列幅を変えるには
-
特定の文字がある行以外を削除...
-
[EXCEL]ボタン押す→時刻が表に...
-
エクセルで特定の文字列が入っ...
-
エクセル マクロ オートフィ...
-
エクセル マクロで数値が変っ...
-
Excel グラフのプロットからデ...
-
excel 小さすぎて見えないセル...
-
エクセルのセルに指定画像(.jpg...
-
エクセルVBA:データ端に画...
-
EXCELで最後の行を固定
-
エクセル 時間の表示形式AM/PM...
-
excel 同じ番号のデーターを横...
-
VBAで色の付いているセルの行削除
-
結合されたセルをプルダウンの...
-
Excelで非表示のセルをとばして...
-
EXCELのVBAで空白列を削除して...
-
エクセル2016で時間を入力して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel関数】UNIQUE関数で"0"...
-
特定の文字がある行以外を削除...
-
エクセルで特定の文字列が入っ...
-
エクセル 上下で列幅を変えるには
-
エクセル マクロで数値が変っ...
-
[EXCEL]ボタン押す→時刻が表に...
-
excel 小さすぎて見えないセル...
-
エクセル マクロ オートフィ...
-
Excel グラフのプロットからデ...
-
Excelのフィルター後の一番上の...
-
結合されたセルをプルダウンの...
-
EXCELで最後の行を固定
-
excelのデータで色つき行の抽出...
-
アクティブになっている行をマ...
-
連続データが入った行の一番右...
-
Excel ウインドウ枠の固定をす...
-
エクセルのセルに指定画像(.jpg...
-
エクセルVBA 最終行を選んで並...
-
VBAで色の付いているセルの行削除
-
Excelでカタカナ・ひらがな・英...
おすすめ情報