
似たような質問なので二つまとめてさせて頂きますm(_ _)m
質問(1)
A1セルに
AAA【BBB】CCC
と入力されてるとします。
【】の中にあるBBBという文字列だけをコピーしてB1セルにペーストするにはどうしたらいいのでしょうか?
条件
AAAとBBBとCCCは文字列の長さは決まっていません。
質問(2)
セルA1に
有料会員登録1件500円(525円コース)
と入力されてるとします。
「件」と最初の「円」の間にある「500」という数字をコピーしてB1にペーストしたいのですが、どうしたらいいでしょうか?
条件
「件」と「円」の間の数字の部分は2桁の時と3桁の時があります。
仕事量が多くてかなり困っており、VBAで自動化させたいと思います。
どうぞよろしくお願いします。
No.5ベストアンサー
- 回答日時:
こんばんは。
こんな風にすれば出来ます。
MacroTest1 で工夫してください。
ユーザー定義関数は、第一引数は、Range、第二引数は、正規表現のメタ・キャラクタを入れます。Global =False タイプ(検索値がひとつ)の場合なら、ほとんどのものに対応できます。
'-------------------------------------------
Sub MacroTest1()
Range("B1").Value = PickUp(Range("A1"), "【(.+)】")
Range("B2").Value = PickUp(Range("A2"), "件([\d,\.]+)円")
End Sub
'-------------------------------------------
Function PickUp(rng As Range, mPattern As String)
Dim Matches As Object
With CreateObject("VBScript.RegExp")
If mPattern = "" Then
PickUp = ""
Exit Function
End If
.Pattern = mPattern
.Global = False
Set Matches = .Execute(rng.Value)
If Not Matches Is Nothing Then
If Matches.Item(0).SubMatches.Count > 0 Then
PickUp = Matches.Item(0).SubMatches(0)
Else
PickUp = Matches.Item(0)
End If
End If
End With
End Function
ありがとうございます!出来ました\(^O^)/
今はまだこのプログラムの意味が分かりませんが、いずれちゃんと理解して更に応用出来るようになりたいと思います!
ありがとうございました!
めちゃくちゃ作業が楽になりした!
No.6
- 回答日時:
#5の回答者です。
(1),(2)とも、同じ種類のご質問ですが、#5の回答は、いくつかある内のひとつのパターンですから、あまり深く考えないほうがよいです。私の今回の書き方は、掲示板で覚えた少しイレギュラーな書き方ですが、正規表現は、使いこなせると、とくに、Webサイトのデータを取り出すときなどに有効です。
正規表現とは何か?
http://msdn.microsoft.com/ja-jp/library/ms974570 …
【(.+)】--->「【】」は【 から 】までの文字。「.」何か文字ひとつ。 「+」前の文字がひとつ以上。「( )」は、ひとまとまり。
今回のユーザー定義関数の正規表現で、だいたいの応用が利くようになります。なお、この「正規表現」は、Perl仕様ですが、これだけでパターン集が出ているぐらいです。
No.4
- 回答日時:
後半は
有料会員登録1件500円の部分の500を注目して
Sub test01()
x = Cells(2, "A")
p1 = InStr(x, "件")
If p1 = 0 Then
MsgBox "データが不可"
Exit Sub
End If
p2 = InStr(x, "円")
If p2 = 0 Then
MsgBox "データが不可"
Exit Sub
End If
MsgBox Mid(x, p1 + 1, p2 - p1 - 1)
End Sub
====
前半はムードはわかるが、質問では何のことだか判らない。
良く考えてみて。自分の頭では判っているだろうが、読者にはわからないよ。
AAA、BBB、CCCのうちの1つ(BBB)か2つ(AAA,CCC)の特徴を言わないと抜き出せないよ。
特徴とは塊が数字や英字とか決った文字列だとか、
前からの桁数や
特定の記号が前後にある
とか。
No.3
- 回答日時:
Excel200以降なら、Split関数があります。
MsgBox Split(Split(Range("A1").Value, "【")(1), "】")(0)
MsgBox Split(Split(Range("A1").Value, "件")(1), "円")(0)
No.2
- 回答日時:
VBAだと
Sub test()
Range("B1").Value = Mid(Range("A1"), InStr(Range("A1"), "【") + 1, _
InStr(InStr(Range("A1"), "【"), Range("A1"), "】") - InStr(Range("A1"), "【") - 1)
End Sub
Sub test2()
Range("B1").Value = Mid(Range("A1"), InStr(Range("A1"), "件") + 1, _
InStr(InStr(Range("A1"), "件"), Range("A1"), "円") - InStr(Range("A1"), "件") - 1)
End Sub
この回答への補足
おお!出来た出来た!
ありがとうございます!魔法みたいです!
ほかのプログラムと組み合わせるのでVBAを書いて頂けて助かりました!
No.1
- 回答日時:
関数だと
=MID(A1,FIND("【",A1)+1,FIND("】",A1,FIND("【",A1))-FIND("【",A1)-1)
=MID(A1,FIND("件",A1)+1,FIND("円",A1,FIND("件",A1))-FIND("件",A1)-1)
でいけますけどVBAがいいですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
セルから一部だけを抜き出して隣のセルにコピーしたい
Excel(エクセル)
-
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
-
4
エクセルのセル内の文字の一部だけを別の列に移したい。
Excel(エクセル)
-
5
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
6
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
7
VBAで重複する項目を1つにまとめて金額を合計したい
Excel(エクセル)
-
8
vbaで指定したセルより下の行を指定する方法について vbaの質問です。 例えば、「C6」セルより下
Excel(エクセル)
-
9
複数のマクロボタンをまとめて一つのマクロボタンにするということ。
Excel(エクセル)
-
10
vba 時間の引き算 例えば 15:00から16:15の間の時間は1時間15分ですが、vbaのコード
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA EXCEL あるセルの中の一...
-
CSVファイルの中で、「 , 」カ...
-
住宅にカナを入力する際に丁目...
-
エクセルで数値を全角文字(カ...
-
word差し込み印刷 半角カタカ...
-
VBA 文字に半角が含まれて...
-
文字コードの%E3%80%とは何です...
-
秀丸エディタで、「-」や「ー」...
-
VBAの文字列の中に”(全角のダブ...
-
WORDで改ページすると時々グレ...
-
csvデータのダブルクォーテーシ...
-
EXCELからCSVにすると余計なカ...
-
COBOL・全角判定
-
マクロを使ってフォルダー内に...
-
ローマ字からカナに変換する方...
-
パス区切りの文字について
-
漢数字の変換
-
ダブルコーテーションの置換
-
unicodeの表示
-
全角英数字の必要性が理解できない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「何とかで始まり、何とかで終...
-
VBA EXCEL あるセルの中の一...
-
正規表現の否定先読みで、複数...
-
角カッコが含まれてるかどうか...
-
バッチファイルの正規表現を利...
-
「abcで始まらない」を正規表現...
-
正規表現 英数字を1つ以上含む...
-
Emeditorの正規表現を利用した...
-
CASLIIの穴埋め問題について。
-
if(str=='a' || str=='b' || st...
-
正規表現のAND条件記述手法
-
【abc】に【完全一致】する正規...
-
文字列から数値を抽出したいの...
-
XML::Xpathで部分一致検索をす...
-
ログファイルからキーワードを...
-
正規表現でのパイプ(or)を減...
-
正規表現で
-
条件式、htmやcgiやphpが含まれ...
-
CGI.pmで'&'が'&'に置き換...
-
拡張子の正規表現
おすすめ情報