![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.8ベストアンサー
- 回答日時:
またまたお邪魔します。
[ ] やスペースが邪魔のようですので・・・
考え方としてはアルファベットを抽出前に「[ ]」を削除したデータを利用するか、
「[ ]」を抽出後に削除するかのどちらかだと思います。
とりあえず、前者の方法で作業用の列としてC列を使っています。
尚、抽出時に「スペース」は抽出しないでアルファベット・スペース以外の文字が出るまでループを繰り返すようにしていますので、
仮に「Aiueo kakikukeko」のような場合でもスペースがなくなり「AiueoKakikukeko」となってしまいます。
Sub test()
Dim i, k As Long
Dim str, buf As String
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Cells(i, 3) = WorksheetFunction.Substitute _
(WorksheetFunction.Substitute(Cells(i, 1), "]", ""), "[", "")
For k = 1 To Len(Cells(i, 3))
str = Mid(Cells(i, 3), k, 1)
If str Like "[A-z,A-z]" Then
buf = buf & str
End If
If Len(buf) > 0 And Not str Like "[A-z,A-z, ]" Then Exit For
Next k
Cells(i, 2) = buf
buf = ""
Next i
Columns(3).ClearContents
End Sub
こんな感じではどうでしょうか?m(__)m
ご丁寧に何度も教えて頂き、ありがとうございます。
作業がかなり楽になりました。本当に便利なものですね!
自分でもVBEを書けるように勉強したいと思いますが、道のりは遠そうです^^;
使っていて不具合が2箇所ほどあったので、更に更に厚かましいですがご教示頂けましたら幸いです。
別スレ同タイトルにて質問させて頂きました。お時間がございます時で結構ですのでご教示頂けましたら幸いです。宜しくお願いいたします。
No.7
- 回答日時:
No.5です。
>最初に出てくる一固まりの英字だけを抽出・・・
とありましたので、再び顔を出しました。
↓のようなコードではどうでしょうか?
Sub test()
Dim i, k As Long
Dim str, buf 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 str Like "[A-z,A-z]" Then
buf = buf & str
End If
If Len(buf) > 0 And Not str Like "[A-z,A-z]" Then Exit For
Next k
Cells(i, 2) = buf
buf = ""
Next i
End Sub
お役に立てれば良いのですが・・・m(__)m
ご教示くださりありがとうございます。
"[" や "]" が英字と共に抽出されてしまいますがほぼ完璧です^^
「かきくkakiku kekoけこ」のデータで「kakikukeko」も抽出したかったので"[A-z,A-z, , ]"と書き足したら「kakikukeko」と抽出してくれました。しかし「 かきくkakiku kekoけこ」の場合も「 kakikukeko」となるので前のスペースは消したいところです。
上記のような不備は今のところスルーできますが、お暇が有ればまたご教示頂ければ助かります。厚かましいお願いですがほんとにお暇な時にお願いできれば幸いです。それまでは自分で試行錯誤してみたいと思います^^
データ整理に時間を取られ非常に困っておりましたが、今後がとても楽になれると思い感謝の気持ちでいっぱいです。ありがとうございました。上記の"["やスペースのご教示も頂けることを期待して暫く〆ずに待たせて頂きます事をご了承願いますm(_ _)m
No.6
- 回答日時:
英字部分が一纏まりになっていれば、次の関数で自動的に抽出させる事が出来ます。
純粋な関数(配列数式ではない)なので、入力後のマクロボタン操作や、Ctrl+Shift+Enterキー操作は不要です。
但し、Excel2007よりも前のバージョンのExcelに対しては非対応です。(質問者様のExcelはExcel2007という事ですから、対応しています)
※以下の例は、元の文字列がA1セルに存在している場合の関数です。
=IF(EXACT(UPPER(A1),LOWER(A1)),"",MID(A1,SUMPRODUCT(ROW(OFFSET(INDIRECT("Z1"),,,LEN(A1)))*ISNUMBER(FIND(MID(LOWER(ASC(A1)),ROW(OFFSET(INDIRECT("Z1"),,,LEN(A1))),1),"abcdefghijklmnopqrstuvwxyz"))*ISERROR(FIND(MID(" "&LOWER(ASC(A1)),ROW(OFFSET(INDIRECT("Z1"),,,LEN(A1))),1),"abcdefghijklmnopqrstuvwxyz"))),SUMPRODUCT(ISNUMBER(FIND(MID(LOWER(ASC(A1)),ROW(OFFSET(INDIRECT("Z1"),,,LEN(A1))),1),"abcdefghijklmnopqrstuvwxyz"))*1)))
お礼が遅くなり申し訳ございませんでした。
ご教示頂きましたコードを試しましたが、何故か英字を抽出する行と、数字やカタカナを抽出してしまう行が出来てしまいます。
提示させて頂いたsampleに問題が有ったのでしょうか…
今回はtom04さんにご教示頂いたVBEを使わせて頂きましたが、お忙しいなかご教示くださりありがとうございました。
No.5
- 回答日時:
こんばんは!
VBAになってしまいます。一例です。
一文字ずつ舐めるように検索する方法です。
データはA1セルからあり、B1セル以降に表示するとします。
画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub test() 'この行から
Dim i, k As Long
Dim str, buf As String
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
'↑A1セルからとしていますので、データがA2セル以降にあれば、For i = 2 To ・・・に変更
For k = 1 To Len(Cells(i, 1))
str = Mid(Cells(i, 1), k, 1)
If str Like "[A-Z]" Or str Like "[a-z]" Or str Like "[A-Z]" Or str Like "[a-z]" Then
buf = buf & str
End If
Next k
Cells(i, 2) = buf
buf = ""
Next i
End Sub 'この行まで
こんな感じではどうでしょか?m(__)m
お礼が遅くなってしまい申し訳ございません。
年度末の多忙でアクセス出来ずにおりました。
多くのご教示を沢山の皆様から頂戴し感謝致しております。
この場をお借り致しましてお礼申し上げます。
頂戴したsampleソースを全部試してみたところ、tom04様のVBEが一番理想の形でしたので、このソースを使わせて頂きたいと思います。
一点だけ補正が出来れば完璧なので、ご教示願えれば幸いです。お忙しいとは思いますが宜しくお願い致します。
あいうえおaiueoかきくけこkakikukekoさsa
上記のような場合に「aiueo」だけを抽出するにはどのように描き足したらよいでしょうか?(最初に出てくる一固まりの英字だけを抽出)何卒よろしくお願い致します。
No.4
- 回答日時:
#3です。
あわてて計算し忘れたまま載せてしまいました
A7セルの場合で
=MID(A7,MIN(SEARCH({"a";"b";"c";"d";"e";"f";"g";"h";"i";"j";"k";"l";"m";"n";"o";"p";"q";"r";"s";"t";"u";"v";"w";"x";"y";"z"},
ASC(A7)&"abcdefghijklmnopqrstuvwxyz")),
SUM((MID(A7,ROW(A$1:INDEX(A:A,LEN(A7))),1)>="a")
*(MID(A7,ROW(A$1:INDEX(A:A,LEN(A7))),1)<="z")))
[Ctrl]+[Shft] +[Enter] で確定、配列数式です({}で囲まれる)
サンプルは 変換できました
![「文字列からアルファベットを抽出」の回答画像4](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/a/655143_5497e8a93163b/M.jpg)
お礼が遅くなり申し訳ございませんでした。
ご教示頂きましたコードを試しましたが、何故か英字を抽出する行と、数字やカタカナを抽出してしまう行が出来てしまいます。
提示させて頂いたsampleに問題が有ったのでしょうか…
今回はtom04さんにご教示頂いたVBEを使わせて頂きましたが、お忙しいなかご教示くださりありがとうございました。
No.3
- 回答日時:
英字がひとまとまりなら
=MID(A7,MIN(SEARCH($F$8:$F$33,ASC(A7)&"abcdefghijklmnopqrstuvwxyz")),
SUM((MID(A7,ROW(A$1:INDEX(A:A,LEN(A7))),1)>="a")
*(MID(A7,ROW(A$1:INDEX(A:A,LEN(A7))),1)<="z")))
[Ctrl]+[Shft] +[Enter] で確定、配列数式です({}で囲まれる)
No.2
- 回答日時:
関数で表示させるなら以下のような配列数式になります。
=MID(A1,MIN(IF((CODE(MID(ASC(A1&REPT(" ",99)),ROW($A$1:$A$99),1))>64)*(CODE(MID(ASC(A1&REPT(" ",99)),ROW($A$1:$A$99),1))<123),ROW($A$1:$A$99),"")),SUM((CODE(MID(ASC(A1&REPT(" ",99)),ROW($A$1:$A$99),1))>64)*(CODE(MID(ASC(A1&REPT(" ",99)),ROW($A$1:$A$99),1))<123)))
配列数式ですので、入力後Ctrl+Shift+Enterで確定してください。
お礼が遅くなり申し訳ございませんでした。
ご教示頂きましたコードを試しましたが、何故か英字を抽出する行と、数字やカタカナを抽出してしまう行が出来てしまいます。
提示させて頂いたsampleに問題が有ったのでしょうか…
今回はtom04さんにご教示頂いたVBEを使わせて頂きましたが、お忙しいなかご教示くださりありがとうございました。
..
No.1
- 回答日時:
下記でどうでしょう。
---
Sub test()
Dim objRE As Object
Dim objMData As Object
Dim objMatch As Object
Dim strPattern As String
Dim strMsg As String
Dim rngR As Range
Set objRE = CreateObject("VBScript.RegExp")
strPattern = "[a-za-z]" '半角a-z全角a-z
With objRE
.Pattern = strPattern '検索パターン
.IgnoreCase = True '大文字と小文字を区別しない
.Global = True '全体を検索
strMsg = ""
For Each rngR In ActiveSheet.UsedRange
Set objMData = .Execute(rngR.Value)
For Each objMatch In objMData
strMsg = strMsg & objMatch.Value
Next objMatch
Set objMData = Nothing
Next rngR
MsgBox strMsg
End With
Set objRE = Nothing
End Sub
お礼が遅くなり申し訳ございませんでした。
ご教示頂きましたコードを試しましたが、何故か真っ白画面で動かなくなってしまいます。
今回はtom04さんにご教示頂いたVBEを使わせて頂きますが、お忙しいなかご教示くださりありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
歩いた自慢大会
「めちゃくちゃ歩いたエピソード」を教えてください。 長時間でも長距離でも結構です。
-
文字列から英数字のみを抽出する関数
Excel(エクセル)
-
セル内文章から、英数字のみ取り出す関数を教えてください
Excel(エクセル)
-
アルファベットの入った文字列の抽出の仕方について。
Excel(エクセル)
-
-
4
エクセルでアルファベットか数値の判定をしたいのですが
Excel(エクセル)
-
5
数値とアルファベットに分ける(エクセル)
Excel(エクセル)
-
6
EXCELで、漢字のみ抽出する式を教えてください。
Excel(エクセル)
-
7
Excelでカタカナ・ひらがな・英数字の抽出
その他(Microsoft Office)
-
8
エクセル(英語リスト)で大文字で始まるものを抽出したい
Excel(エクセル)
-
9
文字列にアルファベットが何文字目に含まれているかの算出
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel SUMIF別ブックのシート名...
-
英数字のみ全角から半角に変換
-
【Excel VBA】PDFを作成して,...
-
マイクロソフト 一時使用コード...
-
会社PCのメールが更新されない
-
Microsoft Formsの「個人情報や...
-
エクセルでXLOOKUP関数...
-
大学のレポート A4で1枚レポー...
-
マクロ自動コピペ 貼り付ける場...
-
Officeを開くたびの「再起動メ...
-
office365って抵抗感ないですか?
-
teams設定教えて下さい。 ①ビデ...
-
マクロ1があります。 A1のセル...
-
Microsoft Officeを2台目のPCに...
-
web上にあるエクセルをショート...
-
あらかじめ用意したテンプレー...
-
Windows 11で、IME言語バー(IM...
-
【Excel】セル内の文字が正しい...
-
VBAファイルの保存先について
-
Microsoft familyに追加されま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Officeを開くたびの「再起動メ...
-
英数字のみ全角から半角に変換
-
outlookのメールが固まってしま...
-
大学のレポート A4で1枚レポー...
-
マクロの書き方を教えて下さい
-
エクセルにおいて品名コードを...
-
マイクロソフト 一時使用コード...
-
マクロのコードを教えてください。
-
Microsoft Formsの「個人情報や...
-
一太郎でカーソルを次の行の先...
-
Microsoft365搭載Windows11PCへ...
-
エクセルでXLOOKUP関数...
-
エクセルやワードを無料で使え...
-
会社PCのメールが更新されない
-
teams設定教えて下さい。 ①ビデ...
-
現在、PC2台でMicrosoft 365 Pe...
-
Microsoft365で写真をアルバム...
-
office365って抵抗感ないですか?
-
Outlook で宛先が複数の場合の人数
-
Office2021を別のPCにインスト...
おすすめ情報