Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-选择例程_Excel_Vba - Fatal编程技术网

Excel VBA-选择例程

Excel VBA-选择例程,excel,vba,Excel,Vba,我有一张这样的桌子: 假设潮汐时间为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

我有一张这样的桌子:

假设潮汐时间为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行列:=xlColumns,类型:=xlLinear,日期:=xlDay_
趋势:=真

再次选择该单元格(4.5)
选择每个单元格直到下一个非空值(在本例中为2.1)
趋势。
选择它在(2.1)中完成的单元格
选择每个单元格直到下一个非空值(在本例中为表顶部的4.5)
趋势

这几乎是所有需要发生的事情。 有什么能说明这个过程吗?我总是感到困惑。有很多不同的方法来做这件事也无济于事。提前谢谢

可以使用Range.End()方法查找下一个(或最后一个)非空单元格。在你的情况下,你会自下而上工作。例如,要查找最后一个非空单元格(1.9):


请注意,End方法将跳转到下一个非空单元格或连续非空单元格区域中的最后一个非空单元格,因此您需要检查相邻单元格是否为空。

Awesome那么在这种情况下如何编辑和选择?我还得到了错误类型不匹配。是否只需在集合末尾添加
。选择
?这是循环中的循环,我有麻烦,我认为双循环是我需要满足的要求。真棒,这看起来很棒!非常感谢你!最后一件事,它说Object required并标记这一行
如果NonEmptyCell.Row>1,那么
我不知道为什么。@ExcelDevelopers您的代码非常有用…………我可以自己使用它在数据点之间创建样条曲线。代码部分工作:D!它在4.5之前的单元格中填充,然后是2.1到4.5之间的所有单元格我不确定为什么它会跳过中间!你写得很好:D再次感谢你!太棒了,没什么大不了的我只运行了两次:D
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