|
>日曜・外注休み・月末(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
|
|