未知长度数组到单元格?

时间:2011-06-15 21:08:10

标签: excel vba

这一次,我有一个单元格保持一个自然数,让我们说10.从另一个单元格开始,对于它右边的9列,我想显示数字1到10.如果我的参考单元格保持20但是,我想从另一个单元格开始,并在20列中显示数字1到20。我希望你能得到主旨。

有没有一个很好的方法来做到这一点,首先,没有VBA?如果没有,有什么好办法用VBA做到这一点?是否有一些事件我应该抓住一个单元格,这将允许我然后手动插入我想要的值?我对Excel和VBA的了解并不是很好,如果问题很简单,那就很抱歉。

提前谢谢大家!

3 个答案:

答案 0 :(得分:3)

假设具有数字的单元格是A3,您想要在F3中启动该系列。在F3中,把这个公式

 =IF(COLUMN()-5<=$A$3,COLUMN()-5,"")

复制F3并粘贴到右侧(或填充右侧)以获取您可能需要的任意数量的列。如果A3永远不会超过100,那么填充106列。如果要从F以外的列开始,则需要更改公式的-5部分。

答案 1 :(得分:2)

您可以使用公式执行此操作:

=IF(COLUMN()<$A$35+2,COLUMN()-1,"")

其中$ 35美元是参考单元格,我在B列中启动了“另一个单元格”。如果从后面的列开始,则需要相应地调整公式中的+2和-1。只需将公式拖到您希望的最大数字的位置,您也可以对参考单元格进行验证,以确保它低于最大数量和整数。

答案 2 :(得分:2)

您将无法使用UDF,因为在多个单元格中更改了值。所以最简单的方法(使用VBA)可能与Change事件有关。如果值在命名范围“holdvalue”中并且您想要在“valueStart”范围内启动数字,那么这将起作用:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim i As Integer

If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub

If Target.Address = Range("holdvalue").Address Then
  For i = 1 To Range("holdvalue")
    Range("valueStart").Offset(0, i - 1) = i
  Next i
End If

End Sub

注意:这不涉及清除值。