[英]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.