在MS Excel中合并行

我在Excel中有一些行(行),forms如下: 在这里输入图像说明

我需要将其转换为以下forms: 在这里输入图像说明

我不是MS Excel的好用户,我正在使用法语版本。

谢谢

试试这个

Option Explicit Public Sub MergeRows() Dim rng As Range Dim dict As Object Dim tmp As Variant Dim i As Long, j As Long Dim c, key Set dict = CreateObject("Scripting.dictionary") dict.CompareMode = vbTextCompare ' Change this to where your source data is With Sheet17 Set rng = .Range(.Cells(2, 10), .Cells(.Cells(.Rows.Count, 10).End(xlUp).Row, 10)) End With For Each c In rng If Not dict.exists(c.Value2) Then ReDim tmp(1 To 3) dict.Add key:=c.Value2, Item:=tmp End If j = 1 tmp = dict(c.Value2) Do If Not c.Offset(0, j).Value2 = vbNullString Then tmp(j) = c.Offset(0, j).Value2 j = j + 1 Loop Until j > UBound(tmp) dict(c.Value2) = tmp Next c ' Change this to where you want your output With Sheet17.Range("A2") i = 0 For Each key In dict.keys .Offset(i, 0).Value2 = key .Offset(i, 1).Resize(, UBound(dict(key))) = dict(key) i = i + 1 Next key End With End Sub 

有趣的问题,这是我使用公式,但肯定会有更好的解决scheme。

它在选项的列右侧使用三个帮助列:

1 – 通过查找行中的(第一个)非空白单元格(按照这些指令)来确定select哪个选项。 将第一个范围作为标题行(option1,option2,… optionn),第二个范围作为从option1到optionn的行。 它应该看起来像这样: =INDEX($K$1:$M$1,MATCH(FALSE,ISBLANK(K2:M2),0))并且注意它应该是一个数组公式(ctrl + shift + enter)

2 – 使用简单的索引+匹配来注册select。 假设第一个帮助列在N列,这是: =INDEX(k2:m2,MATCH(n2,$k$1:$m$1,0))

3-连接地址和选项名称,以便查找地址选项组合。 这很简单: =J2&N2

完成此操作后,您将创build一个简单的表格,其最左边的列中只有单个地址,而选项则作为标题行(取决于地址数量,您可能希望使用数据透视表来填充它们)。 然后你有索引匹配find你的结果: =INDEX($O$2:$O$6,MATCH($J9&K$8,$P$2:$P$6,0))

在这里输入图像说明

你应该做的。