我正在写一个宏,它将用于合并来自一系列单元格的数据。我有一个表格,我希望在范围D2中的表格(" 1")中合并数据:J6,目标位置再次位于M2中的工作表(" 1")中: R2(字母M到R但它们包含标题)。我已经编写了下面代码的一部分,它适用于并运行它们。但是,即使它没有说它有错误,它也不会正确运行..我在宏运行后从我的excel中截取屏幕截图..
从图像中可以看出,我想合并行D中的重复值,并打印与合并值在同一行上的E,F,G,H,I,J列中的值的平均值在D列中。例如,对于值#34; Gebze 6832"在D列中,我想将其作为副本删除,使其成为目标中的一个单元格,并打印E,F,G,H,I,J列的平均值,这两列是在它旁边合并的两行中目标列。
我的代码低于(更新)
<data noupdate="1">
<record id="seq_order" model="ir.sequence">
<field name="name">test Order</field>
<field name="code">test.model</field>
<field name="prefix"></field>
<field name="padding">3</field>
<field name="company_id" eval="False"/>
</record>
</data>
答案 0 :(得分:1)
假设您的数据位于从Column D to Column J
开始的Row 2
范围内,并且必须从Column M to Column S
Row 2
显示输出,可能会有所帮助。
Sub Demo()
Dim ws As Worksheet
Dim dataRng As Range
Dim dic As Variant, arr As Variant
Dim cnt As Long
Set ws = ThisWorkbook.Sheets("Sheet4") 'change Sheet4 to your data sheet
Application.ScreenUpdating = False
With ws
lastRow = .Cells(.Rows.Count, "D").End(xlUp).Row 'get last row in Column D
Set dataRng = .Range("D2:D" & lastRow) 'range for Column D
Set dic = CreateObject("Scripting.Dictionary")
arr = dataRng.Value
For i = 1 To UBound(arr)
dic(arr(i, 1)) = dic(arr(i, 1)) + 1
Next
.Range("M2").Resize(dic.Count, 1) = Application.WorksheetFunction.Transpose(dic.keys) 'uniques data from Column D
cnt = dic.Count
For i = 2 To cnt + 1
.Range("N" & i & ":S" & i).Formula = "=SUMIF($D$2:$D$" & lastRow & ",$M" & i & ",E$2:E$" & lastRow & ")/" & dic(.Range("M" & i).Value)
Next i
.Range("N2:S" & .Cells(.Rows.Count, "M").End(xlUp).Row).Value = .Range("N2:S" & .Cells(.Rows.Count, "M").End(xlUp).Row).Value
End With
Application.ScreenUpdating = True
End Sub
此代码将给出以下结果。