รูปแบบเกี่ยวกับวิธีรวมค่าจากหลายแถวเข้าด้วยกันเป็นแถวเดียวใน Excel [ซ้ำ]


0

คำถามนี้มีคำตอบอยู่ที่นี่แล้ว:

สวัสดีฉันกำลังพยายามปรับ VBA ที่ยอดเยี่ยมที่โพสต์ก่อนหน้านี้เพื่ออ่านข้อมูลและนำทุกบรรทัดที่มี ID เดียวกันในคอลัมน์ 1 และเพิ่มทั้งหมดลงในหนึ่งแถวสำหรับแต่ละรายการ พยายามรับจากสิ่งนี้:

จุดเริ่มต้น

สำหรับสิ่งนี้

จุดสิ้นสุด

แต่โค้ดที่ดัดแปลงด้านล่างจะรวมแถว 2 แถวเข้าด้วยกันเท่านั้นแม้ว่าจะมีมากกว่าสองแถวที่มี id เดียวกันในคอลัมน์ 1

Sub CombineInvoices()
Dim currentRow As Long
Dim currentCol As Long
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row 
currentCol = 4
For currentRow = LastRow To 2 Step -1
    If Cells(currentRow, 1) = Cells(currentRow - 1, 1) Then
        Range(Cells(currentRow, 1), Cells(currentRow, 4)).Copy Destination:=Range(Cells(currentRow - 1, currentCol + 1), Cells(currentRow - 1, currentCol + 4))
        Rows(currentRow).EntireRow.Delete
    End If
Next
currentCol = currentCol + 4
End Sub

ความช่วยเหลือทั้งหมดได้รับสุดซึ้งจริงๆ

หากคุณย้ายคำสั่ง currentCol = currentCol + 4


currentCol = currentCol + 4อยู่ในสถานที่ที่ไม่ถูกต้องคุณต้องวางไว้ด้านบนEnd IF
MátéJuhász

ขอบคุณ Mate ยังรวมสองแถวเท่านั้น แต่เพิ่ม 12 ช่องว่างเซลล์ระหว่างสองรายการสำหรับหมายเลขใบแจ้งหนี้ 12345 เพิ่มรูปภาพของผลลัพธ์ด้านบน
Pbot

คำถามนี้หมายถึง“ … VBA ที่ยอดเยี่ยมที่โพสต์ก่อนหน้านี้” ฉันเดาว่าหมายถึงการรวมค่าจากหลายแถวเข้าในแถวเดียวใน Excel ได้อย่างไร อิงจากความคล้ายคลึงกันในชื่อเรื่อง (และความคล้ายคลึงกันในเนื้อหาที่คลุมเครือ)
สกอตต์

คำตอบ:


0

จัดการงานให้หมด ฉันกำลังลบแถวขณะที่ฉันกำลังแยกคำสั่งคัดลอกและลบออกตามด้านล่างและทั้งหมดใช้งานได้! เย้!

Sub CombineRowsRevisitedStep()
Dim currentRow As Long
Dim currentCol As Long
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
currentCol = 4
For currentRow = LastRow To 2 Step -1
    If Cells(currentRow, 1) = Cells(currentRow - 1, 1) Then
        Range(Cells(currentRow, 1), Cells(currentRow, currentCol)).Copy Destination:=Range(Cells(currentRow - 1, 4), Cells(currentRow - 1, currentCol + 30))
    currentCol = currentCol + 4
    End If
Next
For currentRow = LastRow To 2 Step -1
    If Cells(currentRow, 1) = Cells(currentRow - 1, 1) Then
        Rows(currentRow).EntireRow.Delete
    End If
Next
End Sub
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.