
似たような質問なので二つまとめてさせて頂きます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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Visual Basic(VBA) 【VBA】特定の文字で改行(次の行)に行きたい。 3 2022/04/11 17:20
- Excel(エクセル) エクセルで教えて下さい。 2 2022/05/18 13:00
- Excel(エクセル) 関数を用いて表示したセルの内容を、見えている形でコピーする方法 2 2022/09/14 16:36
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
- Excel(エクセル) Excelの文字列を数字に変換する方法について 6 2023/07/31 21:18
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
このQ&Aを見た人はこんなQ&Aも見ています
-
セルから一部だけを抜き出して隣のセルにコピーしたい
Excel(エクセル)
-
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
エクセルのセル内の文字の一部だけを別の列に移したい。
Excel(エクセル)
-
-
4
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
5
エクセルVBA/イベント発生でコピペ不能はなぜ?
Excel(エクセル)
-
6
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
7
EXCEL VBAで、セルの文字列の前後に文字を入力する方法は?
その他(Microsoft Office)
-
8
ExcelVBAでBookを開く時にファイル名の一部だけを指定で
Access(アクセス)
-
9
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
10
EXCEL/VBA 変数の値をクリップボードにコピーする方法
Visual Basic(VBA)
-
11
フォルダ内の全ブックのシート名を変更したいです。
Excel(エクセル)
-
12
vbaで指定したセルより下の行を指定する方法について vbaの質問です。 例えば、「C6」セルより下
Excel(エクセル)
-
13
複数のマクロボタンをまとめて一つのマクロボタンにするということ。
Excel(エクセル)
-
14
vba 時間の引き算 例えば 15:00から16:15の間の時間は1時間15分ですが、vbaのコード
Visual Basic(VBA)
-
15
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
16
Changeイベントでの複数セルのクリアの処理について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正規表現の否定先読みで、複数...
-
角カッコが含まれてるかどうか...
-
CSVファイルの中で、「 , 」カ...
-
住宅にカナを入力する際に丁目...
-
Excelについて質問です。 セル...
-
エクセルで数値を全角文字(カ...
-
全角英数字の必要性が理解できない
-
VBA 文字に半角が含まれて...
-
VB.net、テキストボックス入力...
-
文字コードの%E3%80%とは何です...
-
プログラミングでは、半角括弧...
-
Excel VBAでPDFファイルをMicro...
-
「一角」って何でしょうか
-
CSVの定義
-
csvデータのダブルクォーテーシ...
-
WORDで改ページすると時々グレ...
-
文字の網掛け設定後段区切りを...
-
ACCESS VBA でのバイナリデー...
-
C#で、テキストボックスの入力...
-
COBOL・全角判定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「何とかで始まり、何とかで終...
-
角カッコが含まれてるかどうか...
-
VBA EXCEL あるセルの中の一...
-
バッチファイルの正規表現を利...
-
正規表現の否定先読みで、複数...
-
「abcで始まらない」を正規表現...
-
ログファイルからキーワードを...
-
英字の大文字小文字および混在...
-
正規表現
-
正規表現についてご教示お願い...
-
正規表現 英数字を1つ以上含む...
-
正規表現でのパイプ(or)を減...
-
正規表現のAND条件記述手法
-
CASLIIの穴埋め問題について。
-
条件式、htmやcgiやphpが含まれ...
-
XML::Xpathで部分一致検索をす...
-
正規表現のパターン " [^<]*?>"
-
intの挙動?
-
拡張子の正規表現
-
if(str=='a' || str=='b' || st...
おすすめ情報