No.4ベストアンサー
- 回答日時:
補足を読みました。
値としてSheet2に表示すれば良い訳ですね。
前回のコードに手を加えるとすると
Sub Sample4()
Dim lastRow As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.Clear
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
With .Rows(3 & ":" & lastRow)
.AutoFilter field:=1, Criteria1:="*ABC*", Operator:=xlOr, Criteria2:="*DEF*"
.SpecialCells(xlCellTypeVisible).Copy
wS.Activate
ActiveSheet.Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues
End With
.AutoFilterMode = False
End With
End Sub
こんな感じでしょうか!
尚上記方法はオートフィルタでやっていますので、データ量が多くない場合は
For~Nextでループさせても良いと思います。
参考程度でそのコードは
Sub Sample5()
Dim i As Long, lastCol As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.Clear
With Worksheets("Sheet1")
lastCol = .UsedRange.Columns.Count
wS.Range("A1").Resize(, lastCol).Value = .Range("A3").Resize(, lastCol).Value
For i = 4 To .Cells(Rows.Count, "A").End(xlUp).Row
If InStr(.Cells(i, "A"), "ABC") > 0 Or InStr(.Cells(i, "A"), "DEF") > 0 Then
wS.Cells(Rows.Count, "A").End(xlUp).Offset(1).Resize(, lastCol).Value = _
.Cells(i, "A").Resize(, lastCol).Value
End If
Next i
End With
End Sub
でも同様の結果になると思います。m(_ _)m
tom04様、何度もご回答いただき、有難うございます。
お教え頂いたSample4のマクロのwS.Cells.Clearの部分を
削除することでうまく貼り付けが可能になりました。
最後までお付き合い頂き本当に有難うございました。
No.3
- 回答日時:
No.1・2です。
たびたびごめんなさい。
いっそのこといままでのコードはきれいに削除して↓のコードに変更してください。
最終列は関係なく、行すべてをコピー&ペーストするようにしてみました。
※ 最終行は今まで通りA列で取得しています。
Sub Sample3()
Dim lastRow As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.Clear
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row '←A列で最終行取得
With .Rows(3 & ":" & lastRow) '←3行目~最終行まですべての行
.AutoFilter field:=1, Criteria1:="*ABC*", Operator:=xlOr, Criteria2:="*DEF*"
.SpecialCells(xlCellTypeVisible).Copy wS.Range("A1")
End With
.AutoFilterMode = False
End With
End Sub
※ A列最終行さえ間違っていなければこれで大丈夫だと思います。m(_ _)m
この回答への補足
tom04様、ご回答ありがとうございます。
今回、お教えいただいたマクロで
私のやりたかったことが可能になりました。
あと、すいません、後出しみたいで申し訳ないのですが、
このマクロにコピー先のシートに
値のみ貼り付けを行う記述を追加可能でしたら
お教えいただけませんでしょうか?
コピー先のシートに罫線やセルの塗りつぶしで
色分け分類をしていましたので・・・。
(本当に申し訳ありません)
No.2
- 回答日時:
No.1です。
補足を読ませていただきました。
前回はA3セルを指定してオートフィルタをかけていましたので、
もし2行目にもデータがある場合には2行目が項目行となってしまいますので、
不要な行までコピー&ペーストしていたと思います。
そこで、今回はA3セル以降最終行までを範囲指定してみました。
尚、コード内で最終列取得は3行目で行っていますので、3行目は最終列まで何らかのデータが入っていない場合
データがある列までしかコピー&ペーストできません。
前回同様↓のコードに変更してマクロを実行してみてください。
Sub Sample2()
Dim lastRow As Long, lastCol As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.Clear
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row '←A列で最終行取得
lastCol = .Cells(3, Columns.Count).End(xlToLeft).Column '←3行目で最終列取得
With .Range(.Cells(3, "A"), .Cells(lastRow, lastCol))
.AutoFilter field:=1, Criteria1:="*ABC*", Operator:=xlOr, Criteria2:="*DEF*"
.SpecialCells(xlCellTypeVisible).Copy wS.Range("A1")
End With
.AutoFilterMode = False
End With
End Sub
尚、
>例えばK7までデータがあるのにもかかわらず
というように最終列が判っている場合は
>lastCol
の宣言は不要で
>With .Range(.Cells(3, "A"), .Cells(lastRow, lastCol))
の行を
>With .Range(.Cells(3, "A"), .Cells(lastRow, "K"))
に変更しても大丈夫だと思います。
今度はどうでしょうか?m(_ _)m
No.1
- 回答日時:
こんばんは!
>A列に『ABC』、『DEF』という文字がある全ての行です
すなわち「ABC」または「DEF」が含まれている行すべてとします。
標準モジュールです。
Sheet1のデータをSheet2のA1セル以降に表示するようにしてみました。
Sub Sample1()
Dim lastRow As Long, lastCol As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
wS.Cells.Clear
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
lastCol = .Cells(3, Columns.Count).End(xlToLeft).Column
.Range("A3").AutoFilter field:=1, Criteria1:="*ABC*", _
Operator:=xlOr, Criteria2:="*DEF*"
Range(.Cells(3, "A"), .Cells(lastRow, lastCol)).SpecialCells(xlCellTypeVisible).Copy _
wS.Range("A1")
.AutoFilterMode = False
End With
End Sub
こんな感じではどうでしょうか?
この回答への補足
tom04様ご回答有難うございます。
お教えいただいたマクロを
実際に、検討していましたので返答が遅くなり申し訳ありませんでした。
おっしゃる通り、選択したいのは
A列に「ABC」または「DEF」が含まれている行すべてです。
(A3行は必ず含めたい)
さて、お教え頂いたマクロですが
実際に処理をしたいテキストファイルを読み込んで
マクロを実行したのですが、
検索文字があるA列のみのコピーになってしまい、
行全体のコピーとなっていませんでした。
また、A3を含む行はコピーされませんでした。
そこで、手入力で簡単なシートを作ってマクロを実行した所
私が選択したい行がコピーされていましたが、
例えばK7までデータがあるのにもかかわらず
コピー先を見るとA7~E7までしかコピーされない状態でした。
その後、値の入っているセルの数を変えて試しましたが、
コピーされる行数が変わり、その法則性もよく分かりませんでした。
シートに入力されている値によってコピーのされ方が変わるのでしょうか?
他に、いいやり方があればアドバイスをお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロ初心者の質問です。 1.シートを開いてマクロを実行する場合、アクセスキーでAlt-L-PMとタ 2 2022/12/23 10:08
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- Visual Basic(VBA) VBAマクロ 決まっていない行を選択して別シートへ貼付け 4 2023/02/16 16:08
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Excel(エクセル) EXCEL マクロで 同じフォルダ内の複数ファイルの複数行全体を選択して1つのファイルに集約 4 2022/09/27 18:41
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 16:07
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Excel(エクセル) エクセルでファイル保存時に複数シートのオートフィルタを全て解除したい 1 2023/05/10 13:23
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
エクセルVBA
Excel(エクセル)
-
-
4
Access サブフォームでの選択行の取得
その他(データベース)
-
5
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
6
ある条件を満たすセルに対応する行のセル内容をコピーして・・
Visual Basic(VBA)
-
7
エクセルで、チェックボックスにチェックをいれた行のデータのみを別シートに転記するには
Excel(エクセル)
-
8
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
9
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
10
Excel チェックボックスにチェックが付いた複数のセルを別のシートにコピー・貼り付けするマクロを教
Visual Basic(VBA)
-
11
【VBA】指定した検索条件に一致したら別シートに転記したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
検索条件に合うセルの個数を数...
-
エクセルで行の高さ及び列幅の...
-
急ぎ!色のついたセルを非表示...
-
Excelで並び替え後にア行...
-
オートフィルタ後のデータから...
-
【Excel VBA】指定した行の最大...
-
エクセルの時刻のカウントが出...
-
複数回答のクロス集計の方法
-
エクセル 1つのせるから3つ...
-
VBA 検索条件にヒットした行を...
-
EXCEL 最終行のデータを他のセ...
-
Excelで,一覧表シートから必要...
-
【Excel】指定した文字列の行を...
-
EXCELの行列検索をおこなう関数
-
Excelデータを少し加工して別の...
-
エクセルの集計方法を教えて下さい
-
エクセルのマクロで別のシート...
-
エクセルで円グラフに引き出し...
-
エクセルの主軸と第2軸の0を合...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
Excelで並び替え後にア行...
-
エクセルで行の高さ及び列幅の...
-
オートフィルタ後のデータから...
-
急ぎ!色のついたセルを非表示...
-
エクセルの時刻のカウントが出...
-
【Excel VBA】指定した行の最大...
-
基準日以前のデータを範囲を指...
-
平均変化率の信頼区間
-
エクセル VBA 行間隔を飛ばした...
-
文字列を比較し、相違するフォ...
-
プルダウンに【なし、平均、デ...
-
EXCEL 最終行のデータを他のセ...
-
excel / ピポッド 日数を出したい
-
EXCELで日付を比べ3か月以内の...
-
VBA 複数行の検索及び抽出
-
エクセル関数について
-
複数回答のクロス集計の方法
-
マクロで行の高さを設定したい
-
エクセル関数のSUMPRODUCTにつ...
おすすめ情報