Excel 无鼠标自动递增

Excel 无鼠标自动递增,excel,Excel,我在单元格1中写入,然后将鼠标放在该单元格右下角的黑色正方形上,右键单击并拖动 主要问题-我不想使用鼠标。并寻找脚本或键盘热键,以获得类似的数字 13 36 5.9 从选定的关键字 13 3 6使用箭头键选择包含标题单元格的列部分: 按住Alt键并依次触摸hfis。然后松开Alt键并触按Enter键 …之后: 我将以下宏放在我的个人宏工作簿中,并指定了一个键盘快捷键 Sub FillSeries() Dim lFirstBlank As Long If TypeName(S

我在单元格1中写入,然后将鼠标放在该单元格右下角的黑色正方形上,右键单击并拖动

主要问题-我不想使用鼠标。并寻找脚本或键盘热键,以获得类似的数字

13

36

5.9

从选定的关键字

13


3 6

使用箭头键选择包含标题单元格的列部分:

按住Alt键并依次触摸hfis。然后松开Alt键并触按Enter键

…之后:


我将以下宏放在我的个人宏工作簿中,并指定了一个键盘快捷键

Sub FillSeries()

    Dim lFirstBlank As Long

    If TypeName(Selection) = "Range" Then
        If Selection.Columns.Count = 1 Or Selection.Rows.Count = 1 Then
            lFirstBlank = GetFirstBlank(Selection)
            If lFirstBlank = 0 Then
                SelectAdjacentCol
                lFirstBlank = GetFirstBlank(Selection)
            End If
            If lFirstBlank > 1 Then
                If Selection.Columns.Count = 1 Then
                    Selection.Cells(1).Resize(lFirstBlank - 1).AutoFill _
                        Selection, xlFillSeries
                ElseIf Selection.Rows.Count = 1 Then
                    Selection.Cells(1).Resize(, lFirstBlank - 1).AutoFill _
                        Selection, xlFillSeries
                End If
            End If
        End If
    End If

End Sub

Function GetFirstBlank(rRng As Range) As Long

    Dim i As Long

    i = 0

    For i = 1 To rRng.Cells.Count
        If IsEmpty(rRng.Cells(i)) Then
            GetFirstBlank = i
            Exit For
        End If
    Next i

End Function

Sub SelectAdjacentCol()

    Dim rAdjacent As Range

    If TypeName(Selection) = "Range" Then
        If Selection.Column > 1 Then
            If Not IsEmpty(Selection.Offset(0, -1).Value) Then
                With Selection.Offset(0, -1)
                    Set rAdjacent = .Parent.Range(.Cells(1), .End(xlDown))
                End With

                Selection.Resize(rAdjacent.Cells.Count).Select
            End If
        End If
    End If

End Sub
另见

更新

如果您只希望填充列,并且希望填充所选内容中的所有列,那么下面的代码应该满足您的要求。它还会查看列中最后一个单元格的NumberFormat,并将填充单元格的NumberFormat更改回该格式。选择最后一个单元格有点随意,但事实就是如此

Sub FillSeriesForAllColumns()

    Dim lFirstBlank As Long
    Dim rCol As Range
    Dim sOldNumberFormat As String

    If TypeName(Selection) = "Range" Then
        For Each rCol In Selection.Columns
            sOldNumberFormat = Selection.Cells(Selection.Cells.Count).NumberFormat
            lFirstBlank = GetFirstBlank(rCol)
            If lFirstBlank = 0 Then
                SelectAdjacentCol
                lFirstBlank = GetFirstBlank(rCol)
            End If
            If lFirstBlank > 1 Then
                rCol.Cells(1).Resize(lFirstBlank - 1).AutoFill _
                    rCol, xlFillSeries
            End If

            rCol.Offset(lFirstBlank - 1, 0).Resize(rCol.Row - (lFirstBlank - 1)).NumberFormat = sOldNumberFormat

        Next rCol
    End If

End Sub

我不明白最后的步骤,hfis是什么意思?它意味着先触摸h,然后触摸f,然后触摸我,然后触摸s,同时按住ALT键。好的,谢谢,我有很多数据要重复这一千次。现在我使用向上回答的脚本,我现在正试图重写它,以便为所选的正方形使用宏,而不是直线或单条value@Artem.Borysov我同意你的看法。我也喜欢宏。我喜欢只自动填充数字-“xlFillSeries”替换为文本上部的“xlFillValues”。然而,我没有找到解决方案来实现少列启动的功能如何使用两列启动,如何仅对数字值进行格式化这将填充一列或一行中的序列,因此必须限制为一列或一行。如果您只想填充列,则可以将其更改为在列之间循环。就形式而言,我认为你的观点是错误的。Excel的FillSeries没有仅填充值的选项。如果只需要值,则必须编写自己的FillSeries算法。或者,我想你可以在完成后将格式设置为常规。我需要任何工作算法来制作2行*2到3行*2的正方形。对于一个hower学习vba这样做,谢谢你的支持。需要一点调试。从0.4936-0.0696 0.4926-0.0661必须是0.4936-0.0696 0.4926-0.0661 0.4916-0.0626而不是此脚本使从0.4936-0.0696 0.4926-0.0661脚本使0.4936-0.0696 1.4936 0.9304 2.4936 1.9304正确工作,我忘记更改代码的其余部分。谢谢