在Excel中按组来转换数据

Excel中有一些数据分组在一个列中的数据块。 每个块的顶部有一个序列号,然后是一个空格,然后是相关的数据。 格式类似于以下内容:

20204 0.009447773 0.008672609 0.04769611 0.041069839 -0.035158783 -0.06094639 0.059548043 0.029640036 8081 0.003970223 -0.024156246 0.063038863 0.005341972 0.124618374 0.005495709 0.098642513 0.005636186 0.063350961 0.128130779 106663 0.115009077 0.049194194 -0.057100467 0.037476741 0.063087314 0.072773643 0.003909923 0.000448073 0.008006874 0.008718021 0.009883258 -0.022708477 0.028655466 

块定期发生,并且都是相同的长度(相隔2007个单元格)。 所以第一个序列号出现在D19,下一个在D2026,然后是D4033等,这个延续了几千行。

我想根据序号乘以不同的数字块。 所以我想把第一个块里的所有东西都乘以0.5,第二个里面的所有东西加上2,第二个里面的所有东西加上1.2,等等。

  Serial Scalar 20204 0.5 8081 2 106663 1.2 

通过VBA或在相邻单元格中的公式,最有效的方法是什么?

你可以expolit Range对象的Areas属性

 Option Explicit Sub main2() Dim iArea As Long Dim serialToScalarTable As Range, cell As Range Dim multiplier As Double Set serialToScalarTable = Range("A2:B4") '<--| table where you have serial/scalar correspondence With Range("D19", Cells(Rows.count, 4).End(xlUp)).SpecialCells(xlCellTypeConstants, xlNumbers) For iArea = 2 To .Areas.count Step 2 multiplier = Application.VLookup(.Areas(iArea - 1).Value, serialToScalarTable, 2, False) For Each cell In .Areas(iArea) cell.Value = cell.Value * multiplier Next Next End With End Sub