• ベストアンサー

選択した項目を上から順番にコピーするマクロ

いつもお世話になっております。 現在、チェックシートを作成しており、入力規則で”○”を選択した項目を別のセルに上から順番にコピーするマクロを考えていますが、まったく思いつきません。  A          B       C     1営業は好きだ            営業は気合だ    2営業は気合だ      ○     営業は数だ 3営業は口八丁だ      4営業は数だ       ○ と、したいのですが、どなたか、ご教示願います!

質問者が選んだベストアンサー

  • ベストアンサー
  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

チェックシートをSheet1、抽出先のシートをSheet2とします。 Sub Sample() Dim Data As Range Dim i As Long Dim j As Long Set Data = Sheets("Sheet1").Range("A1").CurrentRegion j = 1 For i = 1 To Data.Rows.Count If Data.Cells(i, 2) = "○" Then Sheets("Sheet2").Cells(j, 1) = Data.Cells(i, 1) j = j + 1 End If Next Set Data = Nothing End Sub

acmr
質問者

お礼

keirika様 早速のご回答誠にありがとうございます。 丁寧なサンプルまでご用意いただき、感謝しております。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

マクロという言葉を思いついて、聞いている状態のようだ。丸投げだが行数が少なくてできるので1例を。 例データ A列       B列    C列 1営業は好きだ ○ 1営業は好きだ 2営業は気合だ - 4営業は数だ 3営業は口八丁だ ○ 3営業は口八丁だ 4営業は数だ ○ B列に1->4->3行の順で○を入れた。 結果 上記C列の通り ーー コードはSheet1などのChangeイベントに Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 And Target = "○" Then d = Range("c65536").End(xlUp).Offset(1, 0).Select Selection = Target.Offset(0, -1) End If End Sub イベント、Target.Column 、d = Range("c65536").End(xlUp).Offset(1, 0).Select、).Offset(1, 0). などがすぐ判るかな。すぐ判るようなものならVBAの勉強も苦労は要らないのだが。

acmr
質問者

お礼

imogasi様 このたびは大変お手数おかけしました。 お答えいただいたマクロを辞書などで調べながら、意味を確認しておきます。 ありがとうございました。

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.1

B列を上から順に見ていき、 ○だったらその行の左隣(A列)のセルの値を、 C列のデータが入力されている最後のセルの下のセルに書き込む、 ということを、A列のデータがなくなるまで繰り返せば良いだけです。 どの程度マクロの知識があるのでしょうか? 「まったくマクロが解らないから、誰か作ってちょうだい」ということでしょうか?

acmr
質問者

お礼

higekuman様 いつもありがとうございます。 お答えいただいた考え方で十分です。 ありがとうございました。

関連するQ&A