こんにちは
VBAの繰り返し転記で生き詰まっていますのでご助言お願いいたします。
やりたいことはws1のB列を参照してCD、FG列をそれぞれ対応したws2,ws3へ転記したい
と考えています。下記コードを書きましたが、うまく動作されません。お手数ですが
お判りになる方、よろしくお願いします。
Sub 文章転記()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim i As Variant
Dim j As Variant
Dim f As Variant
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("ああ")
Set ws3 = Worksheets("いい")
j = 2
For i = 1 To ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row
f = ws1.Cells(i, "B").Value
If f = "ああ" Then
ws2.Cells(j, "B").Value = ws1.Cells(i, "C").Value & ws1.Cells(i, "D").Value
ws2.Cells(j + 5, "B").Value = ws1.Cells(i, "F").Value & ws1.Cells(i, "G").Value
ElseIf f = "いい[[]*" Then
ws3.Cells(j, "B").Value = ws1.Cells(i, "C").Value & ws1.Cells(i, "D").Value
ws3.Cells(j + 5, "B").Value = ws1.Cells(i, "F").Value & ws1.Cells(i, "G").Value
j = j + 1 '一致したときだけ進めます。
End If
Next i
End Sub
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんにちは!
横からお邪魔します。
すでに的確な回答がなされていますが・・・
どうしてもワイルドカードを使いたいのであれば
Like演算子を使う方法があります。
>ElseIf f = "いい[[]*" Then
を
>ElseIf f Like "いい[[]*" Then
といった感じでしょうかね?
※ 他にも
Instr関数を使っても良いと思いますが、
個の場合「含まれる」というコトになりますので、文字列の頭が決まっているのであれば
Like演算子の方が良いかもしれませんね。m(_ _)m
No.2
- 回答日時:
No1です。
連投すみません。書き忘れました。
>f = "いい[[]*"
の「*」がワイルドカードのおつもりなら、ご期待のようには動作しません。
単に文字列の「*」として解釈されますので。
ワイルドカードのようなことをなさりたければ、ご提示の場合なら最初の5文字が"いい[[]"に一致するかどうかで、判断するなどに変える必要がありそうです。
あるいは、ワイルドカードそのものを使いたいのであれば、LIKE演算子 を利用するなどでしょうか。
https://docs.microsoft.com/ja-jp/office/vba/lang …
早急なご指摘有難うございます。
別シートへの転記の件についてはご指摘の通り、詰めて記載をしていきたいの
ですが、まだまだ理解が足りず書けなかった為、指定した状態で転記をし、空白
は詰める予定でした。(説明不足でごめんなさい)
また、ワイルドカードについてもリンクを参照してみます。
No.1
- 回答日時:
こんにちは
なさりたいことが、イマイチ把握できないのでヒントのみです。
ws2やws3へ転記する行位置の制御に同じ変数「j」を使っているみたいですけれど、シート毎に詰めて転記してゆくのではないのでしょうか?
(例示の図ではそうなっているみたいに見えるが、どうしたいのかよくわからない)
1回の転記で「j行目」と「j+5行目」に転記されますが、5行以上ヒットする行が存在した場合には、最初の「j+5行目」(=7行目)から順に上書きされてゆくことになっていますけれど、それは構わないということでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCEL マクロ データが転記さ...
-
Excelで同じシートのコピーを一...
-
EXCEL:同じセルへどんどん足し...
-
エクセルの複数シートの保護を...
-
エクセルで前のシートを連続参...
-
別シート参照のセルをシート毎...
-
EXCELで1ヶ月分の連続した日付...
-
Excelでセル内の数式は残し値だ...
-
条件に応じて特定の行を非表示...
-
VBAでシートコピー後、シート名...
-
前の(左隣の)シートを連続参...
-
エクセルVBAでパスの¥マークに...
-
【Excel関数】値が合致するセル...
-
Excelで連続印刷をするマクロ
-
Excelの複数ファイルの複数行を...
-
excelでシート毎の最終更新日を...
-
VBAでシート1のデータを他シー...
-
EXCELで同一フォーマットのシー...
-
条件式書式に入力する式
-
Excel マクロ 他ブックのシート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL マクロ データが転記さ...
-
ExcelのVBAで最終行の下にコピ...
-
VBA繰り返し ワイルドカード
-
Excelで同じシートのコピーを一...
-
エクセルの複数シートの保護を...
-
エクセルVBAでパスの¥マークに...
-
条件に応じて特定の行を非表示...
-
前の(左隣の)シートを連続参...
-
Excelで金銭出納帳。繰越残高を...
-
EXCEL:同じセルへどんどん足し...
-
EXCELで1ヶ月分の連続した日付...
-
シートの保護のあとセルの列、...
-
別シート参照のセルをシート毎...
-
エクセルでファイルを開いたと...
-
EXCELで同一フォーマットのシー...
-
エクセルで前のシートを連続参...
-
エクセルで前シートを参照して...
-
VBAでシートコピー後、シート名...
-
Excelでセル内の数式は残し値だ...
-
Accessのスプレッドシートエク...
おすすめ情報
記載を忘れましたので追記させて頂きます。
バージョンはExcel2016です。