循环遍历单元格并将值添加到数组中,然后显示在VBA中的activecell中

我一直在努力这一段时间,我需要帮助。 我是vba新手,希望能对这个问题提供一些指导。 我的电子表格设置,所以我在单元格a2和读取b2中的值是一个整数,告诉我有多less补充configuration文件(sups)存在。 假设数字3在b2中。 然后我期望c2下方的2行在c3和c4中input一些文本(angular色)。

在a2上时,我正在阅读b2中的补充configuration文件的数量,然后循环显示在c2,c3和c4中find的a2angular色。 这可能会改变,因为在某些情况下,只有2个angular色或3个,等等。

要做到这一点,我编码如下:

Sub testarray() Dim sups As Integer Dim role, resultrole As String Dim test() As String role = ActiveCell.Offset(i, 2).Value sups = ActiveCell.Offset(0, 1).Value i = 0 Do While i <= sups test() = Split(role) i = i + 1 ActiveCell.Value = test() Loop End Sub 

问题是我只得到行c2显示,并不是所有的内容如下。 我想a2显示值c2,c3和c4。 我将针对许多行运行此代码以便关联angular色。

看到我的代码和电子表格与我正在阅读的值的照片

在这里输入图像说明 感谢您的帮助…真的很感激任何反馈!

一些小的调整,以尽可能接近原来的。 我更喜欢不使用ActiveCell ,但@ScottHoltzman有一个解决scheme,这样做。

 Sub testarray() Dim sups As Integer, i& Dim role, resultrole As String Dim test As String role = ActiveCell.Offset(i, 2).Value sups = ActiveCell.Offset(0, 1).Value i = 0 Do While i <= sups - 1 If i = 0 Then test = ActiveCell.Offset(i, 2) Else test = test & ", " & ActiveCell.Offset(i, 2) End If i = i + 1 Loop ActiveCell.Value = test End Sub 

您只能看到单元格A中显示的第一个值,因为您从不告诉代码移动到活动单元格的任何位置。 你有一个循环,但它只是遍历数字。

下面的代码将循环遍历B列中的所有单元格,并将angular色写入与A号码存储位置相邻的列A中。 它将写入由|分隔的内容 。 你可以编辑你想要的。

我也拿出了一个数组的使用。 正如你使用它,它不会给你你想要的 – 这是一个连接值。 您可以将单元格范围存储到一个数组中,并循环遍历数组来在A列中写入单元格值,但是在给定问题的情况下似乎并没有真正的优势。

 Sub testarray() Dim sups As Long, x As Long Dim role As String Dim lRow As Long lRow = Range("B" & Rows.Count).End(xlUp).Row Dim cel As Range For Each cel In Range("B2:B" & lRow) role = "" If Len(cel) Then sups = cel For x = 1 To sups role = role & "|" & cel.Offset(x - 1, 1) Next role = Mid(role, 2, Len(role) - 1) cel.Offset(, -1) = role End If Next End Sub 

这应该与ActiveCell属性一起工作。

 Sub testarray() Dim sups As Long, roles As Variant With ActiveCell sups = .Offset(0, 1).Value ReDim roles(sups - 1) For sups = LBound(roles) To UBound(roles) roles(sups) = .Offset(sups, 2) Next v .Cells = Join(roles, Chr(10)) End With End Sub 
Interesting Posts