Excel VBA質問箱 IV

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

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


32186 / 76734 ←次へ | 前へ→

【49787】Re:シート1の工数合計値をシート2の3つの条件に合うセルに加算していきたい。
発言  かみちゃん E-MAIL  - 07/6/21(木) 22:43 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> シート1のN列の合計数値を上から順に参照し、シート2の該当する表(区分)
> の当該月の該当する職場コードのセルに加算していきたい

日付は、70121とある場合、2桁目と3桁目が月であるという前提、
7月以降データにはとりあえず対応しないという前提ですと、
以下のようなコードでできると思います。

Sub Sample1()
 Dim WS1 As Worksheet
 Dim WS2 As Worksheet
 Dim LastCell1 As Range
 Dim LastCell2 As Range
 Dim c As Range
 Dim intMM As Integer
 Dim intCol As Integer
 Dim lngRow As Long
 Dim lngFindRow As Long
  
 Set WS1 = Sheets("Sheet1")
 Set WS2 = Sheets("Sheet2")
 Set LastCell1 = WS1.Cells(Rows.Count, "B").End(xlUp)
 Set LastCell2 = WS2.Cells(Rows.Count, "B").End(xlUp)
 
 For Each c In WS1.Range("B2", LastCell1)
  intMM = Val(Mid(c.Value, 2, 2))
  For lngFindRow = 2 To LastCell2.Row Step 27
   intCol = 0
   On Error Resume Next
   intCol = Application.Match(c.Offset(, 7).Value, WS2.Rows(lngFindRow), 0)
   On Error GoTo 0
   If intCol > 0 Then
    lngRow = 0
    On Error Resume Next
    lngRow = Application.Match(c.Offset(, 1).Value, WS2.Cells(lngFindRow + 2, "B").Resize(25), 0)
    On Error GoTo 0
    If lngRow > 0 Then
     lngRow = lngFindRow + lngRow + 1
    End If
    Exit For
   End If
  Next
  With WS2.Cells(lngRow, intCol + intMM - 1)
   .Value = .Value + c.Offset(, 12).Value
  End With
 Next
 MsgBox "終了しました"
End Sub

なお、7月以降のデータに対応する場合は、一部を修正することで対応可能です。

4 hits

【49785】シート1の工数合計値をシート2の3つの条件に合うセルに加算していきたい... 川森正守 07/6/21(木) 21:46 質問
【49786】Re:シート1の工数合計値をシート2の3つ... かみちゃん 07/6/21(木) 22:06 発言
【49787】Re:シート1の工数合計値をシート2の3つ... かみちゃん 07/6/21(木) 22:43 発言
【49788】Re:シート1の工数合計値をシート2の3つ... Kein 07/6/22(金) 1:43 回答
【49807】Re:シート1の工数合計値をシート2の3つ... 川森正守 07/6/23(土) 7:14 お礼

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