我正在尝试根据硬编码输入列出数字。
如果我在A1中写“ 5”,那么我想在下面的列中列出数字1,2,3,4,5。如果输入为25,则列表将增加到1-25,依此类推。...
有人可以帮我吗?
最诚挚的问候
答案 0 :(得分:2)
您需要一个Worksheet_Change()
事件:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Range("A2:A1048576").ClearContents
For i = 1 To Target.Value
Cells(i + 1, 1).Value = i
Next i
End If
End Sub
答案 1 :(得分:2)
使用公式:
在A2
中使用以下公式:
=IFERROR(IF(A1="","",1),"")
在A3
中使用:
=IFERROR(IF(A2+1>A$1,"",A2+1),"")
然后填充
答案 2 :(得分:1)
Source Cell Range
中的值时,
程序被触发。如果Worksheet Calculate
包含公式并且值由于另一个单元格的更改而更改,则它将不会运行。对于该功能,您必须使用1.5
事件。2
),则将四舍五入到最接近的值
整数(Source Cell Range Address
。Worksheet_Change
中的A1
(设置为C17
)以适合您的需求,例如VBE >> Insert >> Module
。
仅以下单元格会受到影响。 例如,将以下代码复制到标准模块(Option Explicit
Sub Numbered(CellRange As Range)
Dim vntT As Variant ' Target Array/Value
Dim srcVal As Variant ' Value
Dim srcMax As Long ' Maximum Value
Dim srcSgn As Long ' Sign (+-)
Dim srcAbs As Long ' Absolute Value
Dim i As Long ' Target Array Row Counter
' In Cell Range
With CellRange
' Write value of CellRange to Value.
srcVal = .Value
' Calculate Maximum Value.
srcMax = .Worksheet.Rows.Count - .Offset(1).Row + 1
End With
' Check if Value is a number.
If IsNumeric(srcVal) Then
' Convert Value to whole number.
srcVal = CLng(srcVal)
' Write the sign of Value to Sign.
srcSgn = Sgn(srcVal)
' Check if the absolute value of Value is greater than Maximum Value.
If Abs(srcVal) > srcMax Then
' Write Maximum Value with (correct) Sign to Value.
srcVal = srcSgn * srcMax
End If
' Write the absolute value of Value to Absolute Value.
srcAbs = Abs(srcVal)
' Check Absolute Value
Select Case srcAbs
Case Is > 1
' Resize Target Array to Absolute Value rows and one column.
ReDim vntT(1 To srcAbs, 1 To 1)
' Loop through rows of Target Array.
For i = 1 To srcAbs
' Write to element at i-th row and 1st column
' of Target Array.
vntT(i, 1) = srcSgn * i
Next
Case 1
' If Absolute Value is 1, vntT will not be an array, but a
' variant containing one value.
vntT = srcSgn * 1
Case 0
' If Absolute Value is 0, vntT will not be an array, but a
' variant containing one value.
vntT = 0 ' or ""
End Select
End If
' In First Cell of Target Range (Cell Below Cell Range)
With CellRange.Offset(1)
' Resize to bottom cell and clear contents.
.Resize(srcMax).ClearContents
' Check if vntT is an array.
If IsArray(vntT) Then ' Multiple values
' Calculate Target Range: Resize First Cell of Target Range by
' Absolute Value.
' Copy Target Array to Target Range.
.Resize(srcAbs) = vntT
Else ' One value
' Write Target Value to First Cell of Target Range.
.Value = vntT
End If
End With
End Sub
)
Module1
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Const cSrc As String = "A1" ' Source Cell Range Address
If Target.Address = Range(cSrc).Address Then
Numbered Target
End If
End Sub
将以下代码复制到任何要运行该程序的工作表模块中
Sheet1
{{1}}