Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


32592 / 76734 ←次へ | 前へ→

【49377】Re:条件に対して条件の場所に転記したい。
回答  りん E-MAIL  - 07/6/3(日) 9:00 -

引用なし
パスワード
   かおピ さん、おはようございます。

>>このようにsheet1の訂正1と訂正2に上記のような数字が入ったら
>>sheet2の受1.受2.受3へ数字を転記したいです。
>>ただし、・・・*のようにsheet1の訂正1に数字が入らず訂正2に1が入っても
>>転記はしない。(基準は、訂正1にあります。)
>>sheet2の訂正日は、当日の日付(5/31)を転記したいです。
>>よろしくお願いします。

ベタに転記していくなら。
Option Explicit
Sub test()
  Dim ws(1 To 2) As Worksheet
  Dim RR As Long, Rpos As Long, Rmax As Long, CC As Integer
  With Application.ThisWorkbook
   Set ws(1) = .Worksheets("Sheet1") '元
   Set ws(2) = .Worksheets("Sheet2") '先
  End With
  '
  Rmax = ws(1).Range("A65536").End(xlUp).Row
  Rpos = ws(2).Range("A65536").End(xlUp).Row
  '表は2行目から開始
  For RR = 2 To Rmax
   With ws(1)
     '訂正1に1が入っている場合、訂正2に何が入っているかで分岐
     Select Case .Cells(RR, 4).Value
      Case 1: If .Cells(RR, 5).Value = 1 Then CC% = 3 Else CC% = 1
      Case 2:  CC% = 2
      Case Else: CC% = 0
     End Select
     '転記先の列位置(CC%)が0以外の時に転記する
     If CC% = 0 Then
      .Rows(RR).Interior.ColorIndex = 38
     Else
      Rpos = Rpos + 1
      ws(2).Cells(Rpos, 1).Value = Date
      ws(2).Cells(Rpos, 2).Value = .Cells(RR, 1).Value
      ws(2).Cells(Rpos, 2 + CC%).Value = .Cells(RR, 2).Value 'CDE
      ws(2).Cells(Rpos, 6).Value = .Cells(RR, 3).Value
     End If
   End With
  Next
  Erase ws
End Sub
こんな感じです。
動作チェックのために、転記しなかった行に色を塗っています。

なお、処理対象のデータ件数がものすごく多い場合は、配列に入れた方が転記の処理は格段に速くなります。
8 hits

【49309】条件に対して条件の場所に転記したい。 かおピ 07/5/31(木) 0:46 質問
【49372】Re:条件に対して条件の場所に転記したい。 かおピ 07/6/2(土) 20:00 質問
【49373】Re:条件に対して条件の場所に転記したい。 とおりすがり 07/6/2(土) 20:12 発言
【49385】Re:条件に対して条件の場所に転記したい。 かおピ 07/6/3(日) 14:30 発言
【49374】Re:条件に対して条件の場所に転記したい。 ponpon 07/6/2(土) 21:18 発言
【49377】Re:条件に対して条件の場所に転記したい。 りん 07/6/3(日) 9:00 回答
【49387】Re:条件に対して条件の場所に転記したい。 かおピ 07/6/3(日) 17:14 お礼

32592 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free