- ベストアンサー
エクセル シート分離について
- エクセルのシート分離について学びたいです。シート1にある表で、一部のデータをシート2に自動的に移動させる方法を知りたいです。
- 具体的には、A列、B列、C列のデータがある表で、C商事のデータだけを別のシートに移す方法を知りたいです。初心者のため、VBアプリケーションで自動化する方法を教えてください。
- ハッシュタグ: #エクセル #シート分離 #自動化 #初心者 #VBA
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
フィルタオプションの設定でCriteriaを 取引先 <>C商事 として抽出する。 および 取引先 ="=C商事" として抽出する。 2社以内ならオートフィルタオプションでも可能です。 抽出して、別シートにコピペ。×2 SQLを使って抽出する方法や強引な数式を使う方法もありますが、 自動化はマクロの自動記録で記録するのが手軽でしょう。
その他の回答 (2)
- merlionXX
- ベストアンサー率48% (1930/4007)
ANo2 merlionXXです。 質問を読み直しましたが、ひょっとして毎日データを書き加え、それからマクロを実行するのでしょうか? 前回回答したのは1回だけ動かすマクロの例でしたので、もしそうなら不適切でした。 何度も使用するならこんな感じかな。 Sub test02() Dim S(2) As Worksheet, i As Integer, tg As Range Set S(0) = Sheets("Sheet1") Set S(1) = Sheets("Sheet2") Set S(2) = Sheets("Sheet3") For i = 1 To 2 S(i).Columns("A:C").ClearContents S(i).Range("A1:C1").Value = S(0).Range("A1:C1").Value Next Set tg = S(0).Range("A2") Do While tg <> "" If tg.Value = "C商事" Then S(2).Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(, 3).Value = tg.Resize(, 3).Value Else S(1).Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(, 3).Value = tg.Resize(, 3).Value End If Set tg = tg.Offset(1) Loop End Sub
- merlionXX
- ベストアンサー率48% (1930/4007)
元データのあるのがSheet1 C商事を除くデータを転記する先がSheet2 C商事のデータだけを転記する先がSheet3 だとします。 Sub test() Dim S(2) As Worksheet, tg As Range Set S(0) = Sheets("Sheet1") Set S(1) = Sheets("Sheet2") Set S(2) = Sheets("Sheet3") S(1).Range("A1:C1").Value = S(0).Range("A1:C1").Value S(2).Range("A1:C1").Value = S(0).Range("A1:C1").Value Set tg = S(0).Range("A2") Do While tg <> "" If tg.Value = "C商事" Then S(2).Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(, 3).Value = tg.Resize(, 3).Value Else S(1).Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(, 3).Value = tg.Resize(, 3).Value End If Set tg = tg.Offset(1) Loop End Sub
お礼
ありがとうございます。 読み直してみます。