VBA连接,然后根据另一个值增加结果值

VBA连接,然后根据另一个值增加结果值,vba,excel,for-loop,Vba,Excel,For Loop,我试图编写一个宏来循环电子表格,在每一行上,将不同列中的三个值连接成一个单值整数,并在同一行的另一列中生成。然后,根据列中不同值的数字,从该数字开始递增。每次迭代(包括第一次迭代)都应该从该行复制第一列的值,以便每个增量在新创建的输出中反映相同的信息 以下是输入数据的示例: B2、C2和D2都应该连接在一起,从而得到555555 1000,并且应该放在单元I2中。A2应复制到H2,作为I2的位置标识符。然后,I2应基于F2的值递增10倍,这些结果应从I3开始在I2下迭代,A2的值位于每个输出单元

我试图编写一个宏来循环电子表格,在每一行上,将不同列中的三个值连接成一个单值整数,并在同一行的另一列中生成。然后,根据列中不同值的数字,从该数字开始递增。每次迭代(包括第一次迭代)都应该从该行复制第一列的值,以便每个增量在新创建的输出中反映相同的信息

以下是输入数据的示例:

B2、C2和D2都应该连接在一起,从而得到555555 1000,并且应该放在单元I2中。A2应复制到H2,作为I2的位置标识符。然后,I2应基于F2的值递增10倍,这些结果应从I3开始在I2下迭代,A2的值位于每个输出单元格的左侧,在相应的H列中

以下是同一工作表上的输出示例:

一旦完成扩展第一个数字范围的输出,循环将继续到下一行并重复该过程

我尝试通过设置起始点,然后使用row.Count执行for循环,在这个循环中,执行Do While循环,并根据DID整数中断循环。我没有太多的成功,也许这与我使用ActiveCell在迭代过程中尝试移动的方式有关


如有任何建议,将不胜感激。我还不允许嵌入图片,因此示例的外部链接。

正如其他人所指出的,发布代码时,很容易理解和排除您试图执行的操作,但我尝试了一下,并得出了以下结论-快速注意,此子操作发生在两张不同的表上-源代码表,然后是结果输出表。如果你真的需要它在同一张纸上,那么我想你可以在旧数据的基础上输出数据

Public Sub sampleSub()
Dim sourceWS As Worksheet
Dim sourceData() As Variable
Dim outputRange As Range
Dim outputArr() As Variable
Dim readCounter As Long
Dim writeCounter As Long
Dim iterationCounter As Long

Set sourceWS = ThisWorkbook.Sheets(1)
sourceData = sourceWS.Range("A2:F4").Value2 'Read in source data

'Redim outout array with enough rows to be able to store each iteration (column F => 10 + 120 + 1000...)
ReDim outputArr(1 To Application.WorksheetFunction.Sum(sourceWS.Range("F2:F4")), 1 To 9)

For readCounter = 1 To UBound(sourceData, 1)    'Loop through each row of source data
    For iterationCounter = 0 To sourceData(readCounter, 6) - 1  'Iterates to # in source data column F
        writeCounter = writeCounter + 1
        outputArr(writeCounter, 1) = sourceData(readCounter, 1) 'Write source data column A to output column A
        outputArr(writeCounter, 2) = sourceData(readCounter, 2) 'Write source data column B to output column B
        outputArr(writeCounter, 3) = sourceData(readCounter, 3) 'Write source data column C to output column C
        outputArr(writeCounter, 4) = sourceData(readCounter, 4) 'Write source data column D to output column D
        outputArr(writeCounter, 5) = sourceData(readCounter, 5) 'Write source data column E to output column E
        outputArr(writeCounter, 6) = sourceData(readCounter, 6) 'Write source data column F to output column F
        outputArr(writeCounter, 7) = sourceData(readCounter, 7) 'Write source data column G to output column G
        outputArr(writeCounter, 8) = sourceData(readCounter, 1) 'Write source data column A to output column H
        'Concatonate source data columns B, C & D and then adds iteration counter
        outputArr(writeCounter, 9) = CLng(sourceData(readCounter, 2) & sourceData(readCounter, 3) & sourceData(readCounter, 4)) + iterationCounter
    Next
Next

'User selects target range and then data is outputted
Set outputRange = Application.InputBox("Select target for output:", Type:=8)
outputRange.Resize(UBound(outputArr, 1), UBound(outputArr, 2)) = outputArr

End Sub
希望这有帮助,
锡尔克代码

请发布您的代码,以便我们可以帮助您解决问题。锡尔克代码,这看起来不错,我没有想过这样做。我将根据你在这里的资料重新撰写我的报告,并向你汇报。非常感谢您的快速回复!