簡體   English   中英

根據列中某個單元格區域的值合並單元格

[英]Merge cells depending on a value in column for a range of cells

我需要在G行中添加數據,如果E行具有相同的字符串,則在A行中合並Date。 我發現Excel VBA-在一個單元格中合並具有重復值的行,並在另一個單元格中合並值 ,這非常有幫助,但是我需要對G7:G65536范圍進行此操作,因為我的行從1到6被合並了。

有沒有辦法可以修改此代碼?

我正在嘗試使用它,但是沒有給我任何結果。

我已根據您的評論提出了以下示例數據。

行數據合並之前

我懷疑這種想法是將E列用作唯一鍵列,並在建立A列的日期的串聯列表時匯總(aka SUM) G列的數量。Worksheet.UsedRange屬性的前6行將為被忽略,因為在前六行中至少有一些Range.MergeCells屬性具有連接的Areas屬性 TBH,我發現您的原始敘述與您最近的評論相矛盾,因此我將后者作為“發現”。

Sub merge_some_row_data()
    Dim rw As Long, lr As Long, s As Long, str As String

    Application.ScreenUpdating = False
    With ActiveSheet.Cells(1, 1).CurrentRegion
        With .Cells(7, 1).Resize(.Rows.Count - 6, .Columns.Count)
            .Cells.Sort Key1:=.Columns(5), Order1:=xlAscending, _
                        Key2:=.Columns(1), Order2:=xlAscending, _
                        Orientation:=xlTopToBottom, Header:=xlNo
        End With
        lr = .Rows.Count
        For rw = .Rows.Count To 7 Step -1
            If .Cells(rw, "E").Value2 <> .Cells(rw - 1, "E").Value2 And rw < lr Then
                .Cells(rw, "G") = Application.Sum(.Range(.Cells(rw, "G"), .Cells(lr, "G")))
                str = vbNullString
                For s = rw To lr
                    str = str & Chr(59) & .Cells(s, "A").Text    'Chr(59) is the ASCII code for a semi-colon
                Next s
                .Cells(rw, "A") = Mid(str, 2)  'truncate off the firsty semi-colon
                .Cells(rw + 1, 1).Resize(lr - rw, 1).EntireRow.Delete
                lr = rw - 1
            End If
        Next rw
    End With
    Application.ScreenUpdating = True
End Sub

運行代碼后,結果類似於以下內容。

行數據合並后

如果為自己的超級機密目的完全轉錄此框架有任何麻煩,請隨時使用經過編輯的樣本數據以及預期的結果和此代碼中您無法適應的部分來修改原始問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM