
Excel2003でVBAを使って、次の2点のことを行いたいと思っております。
1)全角・半角文字が混在している大量のデータから半角英数記号だけを取り出す。
過去のQ&A(http://oshiete1.goo.ne.jp/qa3158346.htmlのNo.3)から類似した回答を見つけましたが、この方法ですと「=AtoZ(A1)」とセルを指定しなければいけません。一度に半角英数記号を取り出す方法はございませんか?
2)抽出するデータは英文で1つのセルに複数の文章が入力されているのですが、文章を区切って1つのセルには1文のみの入力にする。
例えば、下記の文章がA3にあるとします。
Spring came. Freddie, the leaf, was born on a branch of a tall tree. Hundreds of leaves were born on the tree. They were all friends.
これを
A3にはSpring came.
A4にはFreddie, the leaf, was born on a branch of a tall tree.
A5にはHundreds of leaves were born on the tree.
A6にはThey were all friends.
と入力したいのですが、方法はございませんか?
膨大なデータを扱うため、大変困っています。どなたかご教授お願いします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
1については、引数をループで回せばよいのかな、と直感的に思います.検証できていませんが
2については、
Splitを使ったら簡単にかけるのではないでしょうか?
前提としては各文の終わりにちゃんとピリオドが書いてあることですね
Dim Sentence() As String
Dim Row as Long
Dim Counter as Long
Row = 3
Sentence = Split(Cells(3,1).Value, ".")'A3セルの中身を.で切って配列に格納
For Counter = 0 To UBound(Sentence)
Cells(Counter + 3, 1).value = Sentence(Counter) & "."
Next Counter
と言う感じでしょうか
動作確認をしていませんが・・・
回答になっているでしょうか?
No.3
- 回答日時:
#2さんが言われるように、エクセルの仕事ではありません。
私なら。まず正規表現が扱えるテキスト・エディタを入手します。
フリーソフトでも良いかも知れませんが、有料ですが以下のソフトがあります。
http://www.villagecenter.co.jp/soft/wz50/
http://www.rimarts.co.jp/dana-j.htm
http://hide.maruo.co.jp/software/hidemaru.html
「メモ帳」では正規表現が使えませんし、膨大なデータなら、「メモ帳」では扱えない大きさでしょう。
エクセルからテキスト・ファイルとして保存すれば、テキスト・テディタで読み込むことができます。
また、
> 全角・半角文字が混在している大量のデータから半角英数記号だけを取り出す。
と言われていますが、「取り出す」とは単なる「検索」なのか「置き換え」なのか、
「取り出して」その後どうしたいのかを書かないと、的確な回答は得られないと思います。
No.2
- 回答日時:
こんばんは。
両方とも、Excel向きではありませんね。
特に、膨大なデータならなおさらだと思います。
本来、テキストファイルの中で処理したほうが早いです。
もしかしたら、私と同業者?(私の場合は、もう少し複雑なんです)なのかもしれませんが、特に、2番目のセンテンス切り分けですが、正しく、最初大文字でセンテンスの最後が「.(ピリオド)」で終わっているならよいのですが、実際は、そういうことにならないことが多いのです。それで、結局、後から、手動で入れていくことが多いですね。
ただ、正規表現のマニュアルを手に入れて、後は、ご自身でやってみてください。他人にいちいち聞いているよりも、そのほうが早いです。練習は、エディタ上でしてください。後戻りが利きます。文系・理系を問わず、テキスト処理する人は、正規表現は必須です。
'標準モジュールに貼り付けてください。
'-----------------------------------------------
'半角英数抽出
'-----------------------------------------------
Sub TestRegExp1()
Dim Buf2 As Variant
Dim dummy As Variant
Dim myData As String
Dim c As Variant
Dim i As Long
i = 1
For Each c In Range("A1:A10") '検索範囲
If VarType(c) = vbString Then
Buf2 = OneByteChar(c.Value)
On Error Resume Next
dummy = UBound(Buf2)
On Error GoTo 0
If IsNumeric(dummy) Then
'コピー先
Worksheets("Sheet2").Cells(i, 2).Resize(UBound(Buf2) + 1).Value _
= WorksheetFunction.Transpose(Buf2)
i = i + 1 + UBound(Buf2)
End If
Buf2 = ""
dummy = ""
End If
Next c
End Sub
Function OneByteChar(ByVal strText As String)
'正規表現抽出
Dim Buf() As String
Dim myPat As String
Dim Matches As Object
Dim Match As Object
Dim i As Long
myPat = "[\dA-z]+"
With CreateObject("VBScript.RegExp")
.Global = True
.IgnoreCase = False
.Pattern = myPat
Set Matches = .Execute(strText)
For Each Match In Matches
ReDim Preserve Buf(i)
Buf(i) = Match
i = i + 1
Next Match
End With
OneByteChar = Buf()
End Function
'-----------------------------------------
'センテンス抽出
'-----------------------------------------
Sub TestRegExp2()
Dim Buf() As String
Dim myData As String
Dim myPat As String
Dim Matches As Object
Dim Match As Object
Dim i As Long
'元のデータ
myData = Range("A3").Value
myPat = "([A-Z][^\.]+\.)"
If myData = "" Then MsgBox "データがありません", 48: Exit Sub
With CreateObject("VBScript.RegExp")
.Global = True
.IgnoreCase = False
.Pattern = myPat
Set Matches = .Execute(myData)
For Each Match In Matches
ReDim Preserve Buf(i)
Buf(i) = Match
i = i + 1
Next Match
End With
Range("A3").Resize(UBound(Buf()) + 1).Value = WorksheetFunction.Transpose(Buf())
End Sub
No.1
- 回答日時:
やろうとしていることと 条件が合わないように見えるんですが……
=TRIM(MID(SUBSTITUTE(A$3,".","."&REPT(" ",255)),(ROW(A1)-1)*256+1,255))
これでいいなら。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 Statistically significant differences (p < 0.05), 5 2022/05/03 01:09
- 英語 lead on Earth,” の意味の取り方 6 2022/12/06 10:52
- 英語 These were removed and the patient was placed on a 2 2023/04/18 21:37
- 英語 英文解釈を教えてください。 3 2023/07/10 13:57
- 英語 この英文は平易な反面格調高いですか? 1 2023/01/15 12:04
- その他(言語学・言語) 兄妹デュオ Carpenters が前置詞の目的語になれば The Carpenters 。なぜ? 2 2023/04/09 10:41
- 英語 A healthy 20 centimeters tall の a がなぜ定冠詞でないのでしょうか? 2 2022/10/22 04:40
- 英語 Given that all patients had scores of zero on the 2 2022/05/16 17:44
- 英語 A healthy 20 centimeters tall の a がなぜ定冠詞でないのでしょうか? 2 2022/10/14 05:21
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
このQ&Aを見た人はこんなQ&Aも見ています
-
全角・半角混在の文字列から半角文字のみ取り出す
Excel(エクセル)
-
文字列から英数字のみを抽出する関数
Excel(エクセル)
-
2バイト文字を一括削除するマクロ
Word(ワード)
-
-
4
EXCELで、セル内の半角カナのみを削除する関数
Excel(エクセル)
-
5
EXCEL 文字列操作
Excel(エクセル)
-
6
テキストの半角文字を全部削除したい
その他(パソコン・スマホ・電化製品)
-
7
《excel or word》全角文字を検索して削除、もしくは半角文字のみを抜き出したい
Word(ワード)
-
8
エクセルで、半角文字列を抽出するには
Excel(エクセル)
-
9
エクセルで全角と半角を分離する方法って?
Excel(エクセル)
-
10
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
11
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
12
VBAにて読み込みが出来ない環境依存文字 ㉖ の文字コードを教えて下さい。
Excel(エクセル)
-
13
EXCEL VBA で指定した範囲に入力があるかどうか?
Visual Basic(VBA)
-
14
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
15
文字列からタブコードを取り除きたい
Visual Basic(VBA)
-
16
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
17
指定のWORKBOOKを前面表示する方法(エクセル:VBA)
Excel(エクセル)
-
18
UserForm1.Showでエラーになります。
工学
-
19
エクセル VBA 小数点を含む数字抽出について
Excel(エクセル)
-
20
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのVBAで集計をしたい
-
【関数】同じ関数なのに、エラ...
-
【画像あり】オートフィルター...
-
【マクロ】元データと同じお客...
-
【マクロ】数式を入力したい。...
-
【マクロ】【配列】3つのシー...
-
Office2021のエクセルで米国株...
-
vba テキストボックスとリフト...
-
【マクロ】【相談】Excelブック...
-
【マクロ】実行時エラー '424':...
-
【マクロ】列を折りたたみ非表...
-
他のシートの検索
-
ページが変なふうに切れる
-
【マクロ】オートフィルターの...
-
【条件付き書式】シートの中で...
-
特定のセルだけ結果がおかしい...
-
【マクロ】左のブックと右のブ...
-
エクセル ドロップダウンリスト...
-
Excelに貼ったXのURLのリンク...
-
【マクロ】アクティブセルの時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報