| 
    
     |  | >日曜・外注休み・月末(28or30or31)を自分で指定したときに 
 どんな方法で指定するか、が書いてないので
 こちらで勝手に決めさせていただきました。
 
 シートレイアウトを下記の表のようにしてください。
 
 A    B   C   D   E
 1      1日 2日 3日 4日・・・・
 2 営業日      ×
 3 納期翌日
 4 納期2日
 5 納期3日
 6  :
 7  :
 
 (営業日でない日には2行目に「×」をつける)
 
 下記のコードを標準モジュールに貼り付け
 このシートをアクティブにしてお試しください。
 
 Sub test()
 Dim i As Integer, j As Long, k As Integer
 Dim MyRange As Range, MyFind As Range
 Application.ScreenUpdating = False
 Call Rows(3).Insert(xlShiftDown)
 Set MyRange = Range("C1", Range("IV1").End(xlToLeft)).Offset(2, 0)
 MyRange.FormulaR1C1 = _
 "=IF(R[-1]C[0]=""×"","""",MAX(R[0]C2:R[0]C[-1])+1)"
 k = 3
 For i = 2 To Range("IV1").End(xlToLeft).Column
 If Cells(2, i).Value <> "×" Then
 Cells(3, i).Value = k
 For j = 4 To Range("A65536").End(xlUp).Row
 Set MyFind = MyRange.Find(j, , xlValues, xlWhole, , xlPrevious)
 If Not MyFind Is Nothing Then
 Cells(j, i).Value = MyFind.Offset(-2, 0)
 End If
 Next
 End If
 Next
 Call Rows(3).Delete(xlShiftUp)
 Application.ScreenUpdating = True
 End Sub
 
 
 |  |