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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
エクセルVBA
Excel(エクセル)
-
-
4
エクセルで、チェックボックスにチェックをいれた行のデータのみを別シートに転記するには
Excel(エクセル)
-
5
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
6
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
急ぎ!色のついたセルを非表示...
-
オートフィルタ後のデータから...
-
【Excel VBA】指定した行の最大...
-
エクセル関数について
-
マクロで行の高さを設定したい
-
プルダウンに【なし、平均、デ...
-
複数回答のクロス集計の方法
-
Excelで任意の文字列を半角スペ...
-
エクセル マクロでセルを自動移動
-
文字列を比較し、相違するフォ...
-
エクセルで行の高さ及び列幅の...
-
エクセル VBA 行間隔を飛ばした...
-
データー分析
-
エクセル関数のSUMPRODUCTにつ...
-
検索条件に合うセルの個数を数...
-
エクセルの時刻のカウントが出...
-
Excelで並び替え後にア行...
-
エクセルで円グラフに引き出し...
-
エクセルで文字が白くなる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
基準日以前のデータを範囲を指...
-
エクセルで行の高さ及び列幅の...
-
オートフィルタ後のデータから...
-
Excelで並び替え後にア行...
-
急ぎ!色のついたセルを非表示...
-
エクセルの時刻のカウントが出...
-
【Excel VBA】指定した行の最大...
-
時間の重複チェック
-
エクセル関数について
-
プルダウンに【なし、平均、デ...
-
エクセル VBA 行間隔を飛ばした...
-
Excel 最小二乗法 二次関数
-
文字列を比較し、相違するフォ...
-
EXCEL 最終行のデータを他のセ...
-
EXCELで日付を比べ3か月以内の...
-
マクロで行の高さを設定したい
-
エクセル 複数行ある同一商品...
-
VBA 複数行の検索及び抽出
-
エクセル関数のSUMPRODUCTにつ...
おすすめ情報