Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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 双击“自动填充-基于相邻单元的动态”_Excel_Vba_Double Click - Fatal编程技术网

Excel 双击“自动填充-基于相邻单元的动态”

Excel 双击“自动填充-基于相邻单元的动态”,excel,vba,double-click,Excel,Vba,Double Click,我需要做: 我正在使用Excel中的正常自动填充功能(双击单元格侧面的点)将内容复制到子单元格,因此在这种情况下,单击单元格A1中的点将执行以下操作: 我需要一个脚本,该脚本将在整个列中重复该过程,直到相邻单元格中不再有值为止。这大概就是您要查找的内容: Option Explicit Sub FillInTheBlanks() Dim StartCell As Range, EndCell As Range Set StartCell = ActiveCell Se

我需要做:

我正在使用Excel中的正常自动填充功能(双击单元格侧面的点)将内容复制到子单元格,因此在这种情况下,单击单元格A1中的点将执行以下操作:


我需要一个脚本,该脚本将在整个列中重复该过程,直到相邻单元格中不再有值为止。

这大概就是您要查找的内容:

Option Explicit
Sub FillInTheBlanks()
    Dim StartCell As Range, EndCell As Range
    Set StartCell = ActiveCell
    Set EndCell = ActiveSheet.Cells(ActiveSheet.UsedRange.Rows.Count + 1, StartCell.Offset(0, 1).Column).End(xlUp)

    Dim currentText As String
    Dim i As Long
    For i = StartCell.Row To EndCell.Row
        If Not IsEmpty(ActiveSheet.Cells(i, StartCell.Row)) Then
            currentText = ActiveSheet.Cells(i, StartCell.Row).Text
        Else
            ActiveSheet.Cells(i, StartCell.Row).Value = currentText
        End If
    Next i
End Sub
使用该代码可以执行以下操作:


如果您真的想要屏幕截图中的内容,则需要执行以下操作:

Option Explicit
Sub FillInTheBlanks()
    Dim StartCell As Range, EndCell As Range, NextCell As Range
    Set StartCell = ActiveCell
    Set EndCell = Cells(ActiveSheet.UsedRange.Rows.Count + 1, StartCell.Offset(0, 1).Column).End(xlUp)

    While StartCell.Row < EndCell.Row
        Set NextCell = StartCell.Offset(1, 1).End(xlDown).Offset(0, -1)
        StartCell.AutoFill Destination:=ActiveSheet.Range(StartCell, NextCell), Type:=xlFillDefault
        Set StartCell = NextCell.Offset(1, 0)
    Wend
End Sub
选项显式
子填充空格()
变暗起始单元格作为范围,结束单元格作为范围,下一个单元格作为范围
设置StartCell=ActiveCell
Set EndCell=Cells(ActiveSheet.UsedRange.Rows.Count+1,StartCell.Offset(0,1).Column.End(xlUp)
而StartCell.Row
这是什么意思


您可以通过键盘执行此操作

  • 选择A列
  • 选择主页|查找并选择|转到特殊。。。空白行吗
  • 按[=][向上箭头][ctrl+Enter]
要删除公式,请选择A列,复制并粘贴特殊值


等等,您是想让它自动递增数字,还是重复表1
,直到到达表2?如果你的屏幕截图是你想要的行为,那么我看不出你想要实现什么。为了补充@Alain的问题,在单元格A7的表2中应该是什么?表3?你为什么不试试看,有什么具体问题再回来找我们……对不起。。我的示例是错误的,是的,我不需要当前设置,我将更新帖子。
UsedRange
需要符合条件,例如,
ActiveSheet。UsedRange
@douglancy“need”是一个强有力的词。在这种情况下不是这样的-如果此操作是在一个选择上进行的,(即选择一个单元格并激活一个快捷键-这显然是代码的编写方式,因为它使用了“ActiveCell”),那么数据上下文是隐含的。@АСёаааааааааааааа,并且不正确地考虑边界情况,例如下一列中只有一行时,等等。在正确的VBA中,任何使用关键字
范围
单元格
选择
活动单元格
使用区域
,等等。。。如果代码有这么多问题,那么为什么要发布它呢?阿兰,我说“需要”,因为它没有为我编译-“未知变量”编译器消息。如果我打字?在调试窗口中,我得到了“需要对象”的UsedRange.Address。在使用“Activesheet.”Excel2010进行资格验证时,这两个问题都得到了解决。这真是妙极了!如果我们试图使用键盘简化此操作,在Excel 2003中,您可以使用
+
快捷方式进入第二步。噢,哇!。。。这真是太棒了,展示了Excel的强大功能(还有那些了解这些高级功能的人)。。。谢谢你!