我的大脑受伤了。
第2部分。为丑陋道歉 - 我通常只在需要时学习和使用VBA,所以我对语言的口才有点缺乏。
我一直试图找到一种方法来遍历我的行并在找到特定值时插入一行 - 不要笑,我还没完成 - 但我正在寻找的价值不是<必须 。
我正在测试的数据是A列中的“Days Old” - 我需要插入一行(上方)并使用公式将列B填充到lCol
以获得返回的总天数上一天的目标日期为15,30,60,90,120,150和lRow -1
(即180 +)
这是我使用代码的地方(第2部分在最后乱丢,并且不考虑手头的问题):
With Sheets("Output")
lRow = Range("A" & Rows.Count).End(xlUp).Row
lColi = Cells.Find("*", SearchOrder:=xlByColumns, _
LookIn:=xlValues, SearchDirection:=xlPrevious).Column
lCol = Split(Cells(2, lColi).Address, "$")(1)
For i = lRow To 3 Step -1
If Cells(i, 1).Value = "15" OR _
Cells(i, 1).Value = "30" OR _
Cells(i, 1).Value = "60" OR _
Cells(i, 1).Value = "90" OR _
Cells(i, 1).Value = "120" OR _
Cells(i, 1).Address = Range("A" & lRow -1) Then ' Not quite sure on that one yet either..
Rows(i).Select
Selection.Insert Shift:=xlDown
' Part 2 (Included just in case I delete it from the Module in a rage later tonight)
' Cells(i,1).Offset(-1,0).Select
' Selection.Value = [Date Range. Worrying about this later]
'Cells(i,1).Offset(-1,1).Select
'ActiveCell.FormulaR1C1 = "=SUM(R[-" & n & "]C:R[-1]C)"
' Where n is somehow the offset to +1 from the previous target.... but again, later.
'ActiveCell.NumberFormat = "0"
'Selection.AutoFill Destination:=ActiveCell.Range("C" & i & ":" & lCol & i), Type:= _
xlFillDefault
而这里是我身边的刺(编辑:想象一下,我有声望点,而且这是我准备的excel表的方便图片):
[A]
..
88
89
91
92
..
正如您所看到的,我总是获得一个输出,其中包含我需要查找的实际日期编号(在上例中为90)。
因此;有没有一种方法可以循环我的行并在我的目标日插入一个新的,如果它没有出现,则在最近的一天插入一个新的?
我确实想知道这是否可以成为某种巧妙使用Case的候选人(根据Adam Ralph的回答here)但是放弃了尝试将其考虑到第五个小时的某个时间试图在家中解决这个问题。
如果你能帮我找到一个优雅的解决方案,我将非常感激!
[编辑]:
@mehow,完成的结果通常是这样的,在91天以上的行显示插入行的新数据:
A =“(上一个目标) - (下一个目标-1)” B - lCol = sum(previoustarget:target-1)
[A] [B] [C] [D]
...
87 18
88 1 2
89 3
"60 - 89" 5 3 59
91 1
92 1 2
...
显然在这种情况下,我可以向另一个方向寻找89 - 但同样,我无法保证这将包含在我工作的工作表中。
@Glh - 日子总是在提升。