• 締切済み

【エクセル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 こういうものを使ったことがある為これを応用するといいのかなとも思ったのですが、わからなくなってしまい質問させていただきました。 勉強不足ですいません。 教えて頂けないでしょうか。よろしくおねがいします。

みんなの回答

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

>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)
回答No.1

コードの書き方はいつかありますが、、、、 '---------------------------------------------------- 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 '--------------------------------------------------   以上です。

関連するQ&A

専門家に質問してみよう