Excel 从阵列到工作表的数据
我有一个数组可以将数据打印到messagebox,我怎么能在不同的工作表上也有相同的数据呢 我正在处理的数据是一个线性电缆切割列表。它查看电缆的总长度和各个长度,并检查所有单独长度需要多少卷电缆 理想情况下,第1卷的长度将位于A列,下一卷的长度将位于B列,以此类推,在不同电缆类型之间有一个空白列Excel 从阵列到工作表的数据,excel,vba,Excel,Vba,我有一个数组可以将数据打印到messagebox,我怎么能在不同的工作表上也有相同的数据呢 我正在处理的数据是一个线性电缆切割列表。它查看电缆的总长度和各个长度,并检查所有单独长度需要多少卷电缆 理想情况下,第1卷的长度将位于A列,下一卷的长度将位于B列,以此类推,在不同电缆类型之间有一个空白列 'Message Box Output For k = LBound(DetStk, 2) To UBound(DetStk, 2) sMsg = sMsg & D
'Message Box Output
For k = LBound(DetStk, 2) To UBound(DetStk, 2)
sMsg = sMsg & DetStk(1, k) & vbTab & vbTab _
& DetStk(0, k) & vbCrLf
Next k
这就是我在“Splinted Origins Dev”的帮助下得到的
”工作表输出
n=3
q=rC+p-6
对于k=LBound(DetStk,2)到UBound(DetStk,2)
如果k-1>=LBound(DetStk,2),则
如果DetStk(0,k-1)DetStk(0,k),那么
'数据线重置
n=3
p=p+1
q=rC+p-6
wsVG.Cells(1,q).Value2=cblType
wsVG.Cells(2,q).Value2=DetStk(0,k)和“卷轴”
如果结束
其他的
wsVG.Cells(1,q).Value2=cblType
wsVG.Cells(2,q).Value2=DetStk(0,k)和“卷轴”
如果结束
wsVG.Cells(n,q).Value2=DetStk(1,k)
n=n+1
下一个k
DetStk数组的2行和k列。因此,您应该切换矩阵以使其更易于查看
从
到
它既不美观也不优雅,但下面的代码将允许您将数据输出到消息框中的新工作表“卷筒数据”。只需将“loopvar”替换为迭代每个循环所使用的任何变量。此外,根据循环变量的设置方式,列的q变量中可能需要“-1”,也可能不需要“-1”。我还建议在子工作表(“卷轴数据”).Cells.Clear的开头添加一些位置,以清除以前运行时留下的任何旧数据,p=0则重置列计数器
n = 3 'Row
q = *loopvar* + p - 1 'Column
For k = LBound(DetStk, 2) To UBound(DetStk, 2)
If k - 1 >= LBound(DetStk, 2) Then 'If reel count changes, move over a column
If DetStk(0, k - 1) <> DetStk(0, k) Then
n = 3 'Row reset
p = p + 1 'Increment Column
q = *loopvar* + p - 1
Worksheets("Reel Data").Cells(2, q).Value2 = DetStk(0, k)
End If
Else
Worksheets("Reel Data").Cells(2, q).Value2 = DetStk(0, k) 'First Reel
End If
Worksheets("Reel Data").Cells(n, q).Value2 = DetStk(1, k)
n = n + 1 ' Increment Row
Next k
p = p + 1 'This will add an extra column before the next iteration
n=3'行
q=*loopvar*+p-1'列
对于k=LBound(DetStk,2)到UBound(DetStk,2)
如果k-1>=LBound(DetStk,2),则“如果卷盘计数发生变化,则移动到列上
如果DetStk(0,k-1)DetStk(0,k),那么
n=3'行重置
p=p+1'增量列
q=*loopvar*+p-1
工作表(“卷轴数据”)。单元格(2,q)。值2=DetStk(0,k)
如果结束
其他的
工作表(“卷轴数据”)。单元格(2,q)。值2=DetStk(0,k)“第一卷
如果结束
工作表(“卷轴数据”)。单元格(n,q)。值2=DetStk(1,k)
n=n+1'增量行
下一个k
p=p+1'这将在下一次迭代之前添加一个额外的列
我们不需要完整的代码,我们需要一个。。。强调“最小”:-@BigBen第一组代码仅用于用数据填充msgbox。第二组是如何获取数据。对。。。但这些与您的主要问题无关,即如何将数据从数组传输到工作表。。。你能把你的问题缩减到你是如何尝试的吗?@BigBen这是第一个代码集末尾注释掉的部分。然后请删除所有其他内容,谢谢。
'Message Box Output
For k = LBound(DetStk, 2) To UBound(DetStk, 2)
sMsg = sMsg & DetStk(1, k) & vbTab & vbTab _
& DetStk(0, k) & vbCrLf
Next k
'Sheet Output
Sheets.Add
Range("a1").Resize(UBound(DetStk, 2) + 1, UBound(DetStk, 1) + 1) = WorksheetFunction.Transpose(DetStk)
n = 3 'Row
q = *loopvar* + p - 1 'Column
For k = LBound(DetStk, 2) To UBound(DetStk, 2)
If k - 1 >= LBound(DetStk, 2) Then 'If reel count changes, move over a column
If DetStk(0, k - 1) <> DetStk(0, k) Then
n = 3 'Row reset
p = p + 1 'Increment Column
q = *loopvar* + p - 1
Worksheets("Reel Data").Cells(2, q).Value2 = DetStk(0, k)
End If
Else
Worksheets("Reel Data").Cells(2, q).Value2 = DetStk(0, k) 'First Reel
End If
Worksheets("Reel Data").Cells(n, q).Value2 = DetStk(1, k)
n = n + 1 ' Increment Row
Next k
p = p + 1 'This will add an extra column before the next iteration