所以我有这样一张桌子:
假设潮汐时间为A栏,潮汐高度栏B
Tidal Time Tidal Height
00:00:00
01:00:00
02:00:00
03:00:00
04:00:00 4.5
05:00:00
06:00:00
07:00:00
08:00:00
09:00:00
10:00:00 2.1
11:00:00
12:00:00
13:00:00
14:00:00
15:00:00
16:00:00 4.5
17:00:00
18:00:00
19:00:00
20:00:00
21:00:00
22:00:00 1.9
23:00:00
我需要的是excel-VBA中的选择例程,如下所示:
找到最后一个非空值(在本例中为1.9)
选择最后一个空值
选择每个单元格直到下一个非空值。 (在这种情况下为4.5)
使用以下代码趋势:
Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
Trend:=True
再次选择该单元格(4.5)
选择每个单元格直到下一个非空值(在本例中为2.1)
趋势。
选择完成的单元格(2.1)
选择每个单元格直到下一个非空值(在这种情况下,表格顶部为4.5)
趋势。
几乎所有这些都需要发生。 能否解释一下这个过程?我一直很困惑。要做到这一点有很多不同的方法,这并没有帮助。提前谢谢!
答案 0 :(得分:3)
您可以使用Range.End()方法查找下一个(或最后一个)非空单元格。在你的情况下,你会从下往上工作。例如,要查找最后一个非空单元格(1.9):
Set LastCell = Activesheet.Cells(ActiveSheet.Rows.Count,2).End(xlUp)
Do While LastCell.Row > 2
If LastCell.Offset(-1,0) = "" then
Set NonEmptyCellAboveLastCell = LastCell.End(xlUp)
Else
Set NonEmptyCellAboveLastCell = LastCell.Offset(-1,0)
End If
If NonEmptyCellAboveLastCell.Row > 1 Then
Set RangeToFill = ActiveSheet.Range(NonEmptyCellAboveLastCell, LastCell)
RangeToFill.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, Trend:=True
If NonEmptyCellAboveLastCell.Offset(-1,0) = "" then
Set LastCell = NonEmptyCellAboveLastCell.End(xlUp)
Else
Set LastCell = NonEmptyCellAboveLastCell.Offset(-1,0)
End If
Else
Set LastCell = ActiveSheet.Range("B1")
End If
Loop
请注意,End方法将跳转到下一个非空单元格或连续范围的非空单元格中的最后一个非空单元格,因此您需要检查相邻单元格是否为空。 / p>