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