- 締切済み
【エクセルVBA】データの振り分けについて。
エクセルVBAでのデータの振り分けについて教えて下さい。 シート(1)のA列には他のファイルから抽出したデータがあります。 各行のデータの中に、H20年度が含まれている場合はシート(2)のA列に移動させ、H21年度が含まれている場合にはシート(2)のC列に移動させたいと思っています。 以前に sheets(1).Range("H40").Value Like "*○○*" Then sheets(2).Range("H40").Value = 0 sheets(1).Range("G" & myRow).End(xlUp).Offset(1, 0).Value = _ sheets(2).Range("H40").Value こういうものを使ったことがある為これを応用するといいのかなとも思ったのですが、わからなくなってしまい質問させていただきました。 勉強不足ですいません。 教えて頂けないでしょうか。よろしくおねがいします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
>H20年度が含まれている場合 普通エクセルでは日付は日付シリアル値(2009/11/1のような入力)で入っているのだが、質問のデータは (1)日付シリアル値か (2)文字列か ーー <振り分け・判別> 20年度という意味は日付2008/4/1-2009/3/31か。会社団体で違うよ。明記のこと。 データが文字列(20年度などが文字列の一部に入っている場合)で ないと、Like "*○○*" は20年度などの判別に使えない。 Betweenも無いので2008/4/1より大で2009/3/31より小を判別しないとならないと思う。 <書き出し> Worksheets("シート名").Range("セル番地")=元データセル番地 のようにする。 前もってシートを作っておくほうがコードは簡単だろう。 インデックス方式も(sheets(2).)良いがシート(タブ)位置を変えられたら 混乱するから、できれば使わないほうがよい。
- myRange
- ベストアンサー率71% (339/472)
コードの書き方はいつかありますが、、、、 '---------------------------------------------------- Sub Test() Dim R As Long Dim myVal As Variant For R = 1 To Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row myVal = Sheets(1).Cells(R, "A").Value If myVal Like "*20年度*" Then Sheets(2).Cells(Rows.Count, "A").End(xlUp).Offset(1).Value = myVal ElseIf myVal Like "*21年度*" Then Sheets(2).Cells(Rows.Count, "C").End(xlUp).Offset(1).Value = myVal End If Next R End Sub '-------------------------------------------------- 以上です。