满足特定条件时如何合并来自多行的数据

6 microsoft-excel microsoft-excel-2010

在此处输入图片说明
点击放大

我正在尝试修改这个 Excel 文档。除了AdminTime列 (Column  H)之外,它具有相同的连续行组。当一组连续的行具有相同的LastRxNo(Column  C)值时,我知道它们除了 Column 之外是相同的 H。我想将组中的行合并为一行,其中AdminTime包含AdminTime组中所有行的值的列,以逗号分隔。

这是我希望它看起来像的图片

在此处输入图片说明
点击放大

有任何想法吗?我在想一个 IF 函数,但我对 Excel 不太熟悉,无法让它工作。


使用 Excel 中的 Microsoft Query 工具从 SQL 表中提取所有内容;这是查询:

在此处输入图片说明

dat*_*too 0

这是一个相当快速且混乱的宏,还有很多工作要做,但您会明白的。它还假定您的原始工作表(“Sheet1”)按 LastRxNo 排序。如果您能够在 SQLServer 中添加和调用函数,那么这将是一项更简单且不易出错的任务。希望这可以帮助您入门。它输出到一个名为“summary”的工作表

Sub conCatTimes()
Dim rx As String
Dim admTimes As String
Dim tmp As String
Dim i As Long
Dim LastRow As Long
LastRow = Sheets("Sheet1").Range("C" & ActiveSheet.Rows.Count).End(xlUp).Row
rx = ""
i = 1
For Each cell In Sheets("Sheet1").Range("C2:C" & LastRow)
    If rx <> cell Then
        rx = cell
        i = i + 1
        tmp = ""
    End If
tmp = cell.Offset(0, 11)
admTimes = admTimes + tmp + ", "
    If cell.Offset(1, 0) <> rx Then
        Sheets("summary").Range("A" & i) = rx
        Sheets("summary").Range("B" & i) = Left(admTimes, Len(admTimes) - 2)
        admTimes = ""
    End If
Next

End Sub
Run Code Online (Sandbox Code Playgroud)