- 締切済み
エクセルのマクロ作成で困ってます
マクロ初心者です。 ”Sheet1にあるデータについて、複数条件で抽出後、Sheet2の表に転記” という動作をマクロで組みました。 ここまでは良かったのですが、Sheet2に転記する際、下記の様にさらに条件を付加したいと思っています。 やりたいこと(ア) Sheet1で条件によりたとえば10個のデータを抽出できたとし、 1~6個目までは、Sheet2の1行~6行に転記、 7~10個目までは、Sheet2の11行~14行に転記。 ※”6個目まで1~6行に転記”というのは決まっているのですが、 この10個というのは、例であって、5個だったり、14個だったり、 抽出したデータにより異なるので、変数です。 やりたいこと(イ) Sheet1から、さらに別の条件で抽出したデータを、 やりたいこと(ア)の10個目を転記した行のあとすぐ(例でいうと15行目)から転記したい。 ※やりたいこと(ア)で抽出した条件が6個以下だった場合、11行目から転記。 以上の2つです。 条件の抽出までは出来るのですが、 (ア)の7個目から別のところに転記 (イ)の別の条件で抽出したデータを(ア)の次(6個以下の場合は11行目)から転記 をどうやって組んだら良いかわかりません。 もし分かる方がいらしたら、 どのようなコマンド(?)を使ったら良いのか、 ご教示いただけると助かります。 よろしくお願いします!
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
>”Sheet1にあるデータについて、複数条件で抽出後、Sheet2の表に転記” 抽出に仕方次第ですが、1件(1行)ずつ判断しているなら こんな感じでできるんじゃないかなあ Sub sample() Dim n As Long Dim i As Long i = Cells(Rows.Count, 1).End(xlUp).Row + 1 If Cells(Rows.Count, 1).End(xlUp).Row = 1 Then i = 1 For n = 1 To 100 If i >= 7 And i <= 10 Then i = 11 Cells(i, 1) = n i = i + 1 Next n End Sub つまり、行番号が7~10の場合 11にしてしまうってこと
- imogasi
- ベストアンサー率27% (4737/17070)
この質問は丸投げで、ここは課題をやってもらう下請けするところではない。 >もし分かる方がいらしたら そんなに判らないほど難しい問題ではない。余り勉強して無い人が進めないだけ。 条件が、普通では余り起こらないような、個人的(個別的)問題で、シコシコやるほか無いでしょう。質問文を読むだけでも疲れる。 回答が出てないのは、面倒で回答者が忙しい中、やる気が出ない課題だからだろう。 >複数条件で抽出後、Sheet2の表に転記”という動作をマクロで組みました。 これのほうがVBAで難しいと思うが。 どこかのシートのセル範囲に、結果(全体・全行))を一旦仮に(セル範囲に)定着して、そのセル範囲で質問のことを考えたら。 (ア)など、検索結果を一旦シートのセル範囲にセットすれば、後は上から6行と残りの行を掴むのは簡単だろう。 検索・抽出と(ア)を一遍に、というのは出来ないのは常識だろう。 (イ)これも下の固まり行で11行目から下でデータの最終行を掴み、その直下行から2回目の検索結果を貼り付ければ仕舞いではないか。 テスト的なコード例 Sub test01() d = Range("C11").End(xlDown).Row MsgBox d End Sub を使って、 (1)C11セルも空白、C11セルだけデータ有りの場合65536(正確にはSheets.Count)になる。 それ以外はd+1行から貼り付け。 それで上記に修正を入れて、スマートじゃないが Sub test01() If Range("C11") = "" Then d = 10 ElseIf Range("c12") = "" Then d = 11 Else d = Range("C11").End(xlDown).Row End If MsgBox "次に貼り付けは" & d + 1 & "行" End Sub ・C11以下空白 ・C11だけ入力 ・C12以下もデータ有り でデータを作り、テストして見て参考にするはどうかな。
お礼
>この質問は丸投げで、ここは課題をやってもらう下請けするところではない。 厳しいご指摘ありがとうございました。 締め切りが間近だった事から焦ってしまい勉強不足を丸投げしてしまったと、反省しております。 にも関わらず、回答頂きありがとうございました! 一行一行勉強しつつ、マスターしていきたいと思います。
お礼
回答ありがとうございます! 条件の抽出に、一件づつ判断しているので、 行番号を変更してしまえば良いということですね!! まったく思い付かない発想でした(>_<) 本当に助かりました! なんとか完成させたいと思います!