![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
ある条件を満たすセルに対応する行のセル内容をコピーして・・
いつもお世話になっております。エクセルVBAのほぼ初心者です。
ある列の一部(たとえばE100~200)において、ある条件を満たすセル(たとえば<30)を
すべて検索して(たとえばE110とE130)、そのセルの行にある別列のセル内容(たとえば
A110とB110、およびA130とB130)をコピーして、別のワークシートのとある場所(たとえ
ばB2)に貼り付ける。
というようなマクロを作成したいのですが、自分の力量では難しいのです。。
Do~Loopなどを利用すればよいのでしょうか?
いい方法がありましたらどうぞよろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
Excelに元々備わっている機能を使うなら
Sub Macro1()
Dim r As Range
With Sheets("sheet1") '元シート
Set r = .Range("E99:E200") '検索範囲+直上行
.AutoFilterMode = False
'AutoFilterで抽出条件設定
r.AutoFilter Field:=1, Criteria1:="1"
If r.SpecialCells(xlCellTypeVisible).Count = 1 Then
MsgBox "no data"
Else
Intersect(r.Offset(, -4), r.Offset(1, -4)).Resize(, 2).Copy _
Sheets("sheet2").Range("B2") 'コピー先
End If
.AutoFilterMode = False
End With
Set r = Nothing
End Sub
こんな感じもあります。
シート名やアドレス等は適宜修正してください。
コピー先に既存データがあるなら、コピー前にクリア処理も必要かと。
難しく考えすぎていました。。
そうですよね。オートフィルターを利用すれば割と簡単にマクロが作れますね。
アドバイスありがとうございました。
No.3
- 回答日時:
「ある条件(<30)を満たす値を、指定した範囲(E100~E200)から抽出し、そのセルの位置(行・列)情報を基に
特定のセル(B列とします)の値を特定のセル(1000~1000+条件を満たすセル値の個数行目のC列)に入力する。」として、回答します。
マクロを記述する前にマクロを記述し易くするための準備をします。
同一シートのセルZ100に[=IF(B100<30,"S","")]と入力し、Z101~Z200にコピーし貼り付けます。
Z列をクリックし、書式設定より非表示にします。
マクロを書きます
Dim A,B,C
A=Application.WorksheetFunction.CountIf("S", Range("Z100:Z200"))
B=0
For C=1 To A
B=B+ Application.WorksheetFunction.Match("S", Range(Cells(B + 1, 26), Cells(200,26)), 0)
Cells(1000+B,3)=Cells(B,2).Value
Next C
"S"は目印、Z列は目印置場と考えて下さい。目印及び目印置場は使用者が勝手に決めて下さい。
また、目印を[=CountIf("E$100:E100")]として、
A=Application.WorksheetFunction.Max(Range("Z100:Z200"))
B=B+ Application.WorksheetFunction.Match(B, Range(Cells(C + 1, 26), Cells(200,26)), 0)
のように記述しても同じことです。
入力するシートがSheet2とすれば、
Sheets("Sheet2").Cells(1000+B,3)=Cells(B,5).Value
となります。
ついでに、入力するシートが別のファイルXXXのSheet2とすれば、
Workbooks("XXX").Sheets("Sheet2").Cells(1000+B,3)=Cells(B,5).Value
となります。
No.1
- 回答日時:
コピー先をどうするのか良く分からないけど(結果をくっつけて1つのセルにいれるのか?)、こんなのでどうですか?
とりあえずコピー元のセルはくっつけずにそのままコピー先のセルに入れるようにしてみました。
---------------------------------------
Sub hoge()
Dim MotoRowNum As Integer 'コピー元シートの行カウンタ
Dim SakiRowNum As Integer 'コピー先シートの行カウンタ
'コピー先シートの行カウンタを初期化
SakiRowNum = 1
'コピー元シートの100~200行目をチェック
For MotoRowNum = 100 To 200
'コピー元ブックの1シート目のE列が30未満か判定
If ActiveWorkbook.Sheets("Sheet1").Cells(MotoRowNum, 5) < 30 Then
'コピー元シートのA列からコピー先シートのA列にコピー
ActiveWorkbook.Sheets("Sheet2").Cells(SakiRowNum, 1) = _
ActiveWorkbook.Sheets("Sheet1").Cells(MotoRowNum, 1)
'コピー元シートのB列からコピー先シートのB列にコピー
ActiveWorkbook.Sheets("Sheet2").Cells(SakiRowNum, 2) = _
ActiveWorkbook.Sheets("Sheet1").Cells(MotoRowNum, 2)
'コピーしたときだけコピー先シートの行カウンタをUP
SakiRowNum = SakiRowNum + 1
End If
Next
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
- Excel(エクセル) 【至急】エクセル条件付き書式について教えてください A1:C3 E1:G3 からなる9マスずつの2つ 10 2023/07/28 12:09
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Excel(エクセル) 条件付き書式の色付きセルのカウント方法について 2 2022/10/21 14:51
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
【VBA】特定の条件でセルをコピー
Visual Basic(VBA)
-
-
4
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
5
VBAで条件が一致する行をコピーしその1つ下へ挿入
Excel(エクセル)
-
6
VBA 条件が一致した場合のみコピーする
その他(ビジネス・キャリア)
-
7
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
8
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
9
エクセルVBAのIFを使ったコピペ
Excel(エクセル)
-
10
VBA 空白行に転記する
Visual Basic(VBA)
-
11
複数のセルをコピーし、別シートの任意のセルへペーストをするためのマクロ
Excel(エクセル)
-
12
条件にマッチする行を抽出するVBAを教えてください
経営情報システム
-
13
i=cells(Rows.Count, 1)とi=cells(Rows.Count, 2)の違い
Visual Basic(VBA)
-
14
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
-
15
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
16
完全一致したら代入するマクロを教えてください
Excel(エクセル)
-
17
エクセル 同じ値を探して隣の数値をコピーする
Excel(エクセル)
-
18
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
19
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
20
エクセルVBA 別シートの複数のセルの値をコピーする方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IF文、条件分岐の整理方法
-
VBAコードのインデント表示
-
時間短縮のために、テキストフ...
-
Excel VBA 選択範囲の罫線色の...
-
マクロの記録を使用したマクロ...
-
VB.net(VB)で、フォームにExcel...
-
IEを使わないでhtmlテキストを...
-
Excelセルに入力された文字の色...
-
VBAなくなるの?
-
【ExcelVBA】値を変更しながら...
-
VBA 別ブックから条件に合うも...
-
VBAの質問です、複数のテキスト...
-
エクセルのマクロについて教え...
-
ワードVBA どの表か知ることは...
-
エクセルのマクロについて教え...
-
エクセルのVBAコードについて教...
-
エクセルのマクロについて教え...
-
エクセルのVBAコードについて教...
-
エクセルのマクロについて教え...
-
ExcelVBA修正のお願い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAなくなるの?
-
VBAでCOPYを繰り返すと、処理が...
-
vba 削除
-
プログラミング
-
Excelのマクロについて教えてく...
-
Excelのマクロについて教えてく...
-
エクセルのVBAコードについて教...
-
久しぶりのプログラミング
-
ユーザーフォームに別シートか...
-
エクセルVBAコードで教えて下さ...
-
VBA 別ブックからコピペしたい...
-
ExcelのVBAコードについて教え...
-
VBAコードについて教えてくださ...
-
vba アクティブシートの名前変...
-
Excelのマクロについて教えてく...
-
エクセルVBA
-
Geogebraの操作方法について
-
マクロの記録を使用したマクロ...
-
Excel(M365) Vlookup/セル反転(...
-
Excel 範囲指定スクショについ...
おすすめ情報