- ベストアンサー
マクロ初心者のための便利な使い方
- マクロを使って効率的に作業を自動化する方法を紹介します。特に、B列のデータをA1に切り取って貼り付ける作業を繰り返す場合に便利な方法をご説明します。
- 初心者の方にもわかりやすく、具体的な手順を示しながらマクロの作成方法を解説します。B列のデータが複数あっても、一回の実行で自動化できる方法もありますので、ぜひ参考にしてください。
- また、記事内ではステップバイステップでマクロの作成手順を解説していますが、さらに効果的な使い方や応用テクニックについても詳しく紹介しています。ぜひ、マクロを活用して作業効率をアップさせましょう!
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
B列の行数が分かっているなら Dim i As Long For i = 2 To 12 If Cells(i, 2) = [比較するもの] Then やりたいこと End If Next 行数が不明でB列の必要データに空欄が無いないなら Dim i As Long i = 2 Do While cells(i, 2) <> "" 中は同じ Loop 多少なりとも今の構文を書いていただかないとこれくらいしか回答できないです
その他の回答 (2)
- mt2008
- ベストアンサー率52% (885/1701)
補足を読んでも良く判りませんでしたのが、結局のところ、 1.B列の最終行を調べる 2.B2からB最終行までを切り取る 3.A1に貼り付ける と、言う処理を行いたいのですね? B列のデータが入っている最終行を求めるにはRange("B65536").End(xlUp).Row とやるのが一般的です。 あとはB2から最終行までを切り取ってA1に貼り付けます。 Sub Sample() Dim nLast As Long nLast = Range("B65536").End(xlUp).Row If nLast = 1 Then Exit Sub Range("B2:B" & nLast).Cut Range("A1").Select ActiveSheet.Paste End Sub
繰り返し処理、つまり For-Next の構文、あるいは、While-Wend の構文が役に立つのではないかと・・・・・ 今回の場合、While-Wend かな?
補足
有難う御座います。While-Wendを使うのが良さそうな感じですね。 あとB列のデータの有無を確認するのにはusedrangeになるのでしょうか? ここも頭を悩ませている所です。
補足
有難う御座います。後ほど試して見ます。 この作業の前後はマクロの記録やWEB上で見つけた物で何とか出来上がってはいますが、ここの部分はどうしたらいいのか分からず全く何も出来ていない状態なので構文が無いんです。全くと言ってもマクロの記録の機能で記録した物だけです。 発注管理として利用しており、複数の固定顧客からの注文をデータシートに格納して注文締め切り後に問屋に発注書を作成しています。 今の作業の流れとしては (1)注文登録(発注元・発注先・品物・数量) (2)注文締め切り後に本日に注文のあった問屋を抽出 (3)各問屋への発注商品・発注先の抽出・印刷 となっています。この(2)(3)を一回の作業で行えないかと思案していた所です。 (2)でB列にマクロの記録で記録したフィルタオプションを使い今日発注を行う予定の問屋を一旦抽出し、(3)でB列で抽出された問屋の一番上(B2)を一件切り取りをして(B1が見出しでB2・B3・B4・B5にデータがある場合B2を切り取りA1へ、B3→B2・B4→B3・B5→B4とデータを一行上へ移動してB2を埋める)A1に貼り付け再度フィルタオプションでその問屋宛の商品・発注先を抽出して印刷の作業を抽出された問屋が全て切り取られ無くなるまで目視で繰り返し行っています。 マクロの記録で行っているのでB2を切り取りの指示後B3B4と切り取り指示を10回行う様にすると5件や3件しかない日に不具合が起きるので残りのデータの先頭をB2へ持っていくやり方になっています。 そこでB1の見出し以下のデータの有無を調べ、データが有ればその先頭を切り取り・A1へ貼り付けする方法があれば(2)(3)の作業が一回で済むのではないだろうかと色々調べている所です。 分かり難いかもしれませんが何か良い方法があれば引き続き宜しくお願い致します。