excel - 从数组到工作表的数据
问题描述
我有一个将数据绘制到消息框的数组,我怎样才能在不同的工作表上也有相同的数据?
我正在使用的数据是一个线性电缆切割列表。它查看总电缆长度和各个长度,并检查所有单独的单独长度我需要多少卷电缆。
理想情况下,卷轴 1 的长度将进入 A 列,下一个卷轴将进入 B 列,依此类推,在不同电缆类型之间有一个空白列。
'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
这就是我在“Splintered-Origins-Dev”的帮助下所做的工作
'Sheet Output
n = 3
q = rC + p - 6
For k = LBound(DetStk, 2) To UBound(DetStk, 2)
If k - 1 >= LBound(DetStk, 2) Then
If DetStk(0, k - 1) <> DetStk(0, k) Then
'Data line reset
n = 3
p = p + 1
q = rC + p - 6
wsVG.Cells(1, q).Value2 = cblType
wsVG.Cells(2, q).Value2 = DetStk(0, k) & " Reels"
End If
Else
wsVG.Cells(1, q).Value2 = cblType
wsVG.Cells(2, q).Value2 = DetStk(0, k) & " Reels"
End If
wsVG.Cells(n, q).Value2 = DetStk(1, k)
n = n + 1
Next k
解决方案
它既不漂亮也不优雅,但下面的代码将允许您将进入消息框的数据输出到新工作表“Reel Data”。只需将“ loopvar ”替换为您用于迭代每个循环的任何变量。此外,根据您的循环变量的设置方式,可能需要也可能不需要列的 q 变量中的“- 1”。我还建议在子Worksheets("Reel Data").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
推荐阅读
- flutter - 如何使用 Dart 解密 AES 256 CBC
- stripe-payments - Stripe 类中的方法 createToken 不能应用于给定类型;stripe.createToken(
- python - 在 Keras 中编写客户评估指标的问题
- next.js - 从性能中继层发生的下一个构建错误
- stm32 - 在 STM32F103 中按下释放按钮时,EXTI 线得到奇数/偶数中断计数
- android - Android MulticastSocket 隐式关闭
- java - 为什么 java 的 orElse 块总是被执行?
- angular - 路由url在角度发生变化时如何刷新页面
- python - 使用 Python 重命名不同文件夹中的文件
- node.js - Nodejs请求功能仍未完成但代码继续下一步?