Note: The other languages of the website are Google-translated. Back to English
English English

วิธีการเปลี่ยนแถวที่ซ้ำกันเป็นคอลัมน์ใน Excel

สมมติว่าคุณมีช่วงข้อมูลใน Excel ตอนนี้คุณต้องการเปลี่ยนแถวที่ซ้ำกันเป็นหลายคอลัมน์ตามภาพหน้าจอต่อไปนี้คุณมีแนวคิดที่ดีในการแก้ปัญหานี้หรือไม่?

เปลี่ยนแถวที่ซ้ำกันเป็นคอลัมน์ด้วยรหัส VBA

doc-convert-duplicate-row-column-1


ลูกศรสีฟ้าฟองขวา เปลี่ยนแถวที่ซ้ำกันเป็นคอลัมน์ด้วยรหัส VBA

น่าเสียดายที่ไม่มีวิธีโดยตรงให้คุณจัดการกับมันใน Excel แต่คุณสามารถสร้างรหัส VBA เพื่อแก้ปัญหาได้โปรดทำดังนี้:

1. ค้างไว้ ALT + F11 คีย์เพื่อเปิด หน้าต่าง Microsoft Visual Basic for Applications.

2. คลิก สิ่งที่ใส่เข้าไป > โมดูลและวางรหัสต่อไปนี้ในไฟล์ หน้าต่างโมดูล.

รหัส VBA: เปลี่ยนแถวที่ซ้ำกันเป็นหลายคอลัมน์

Sub ConvertTable()
'Updateby Extendoffice
Dim xArr1 As Variant
Dim xArr2 As Variant
Dim InputRng As Range, OutRng As Range
Dim xRows As Long
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
Set OutRng = OutRng.Range("A1")
xArr1 = InputRng.Value
t = UBound(xArr1, 2): xRows = 1
With CreateObject("Scripting.Dictionary")
    .CompareMode = 1
    For i = 2 To UBound(xArr1, 1)
        If Not .exists(xArr1(i, 1)) Then
            xRows = xRows + 1: .Item(xArr1(i, 1)) = VBA.Array(xRows, t)
            For ii = 1 To t
                xArr1(xRows, ii) = xArr1(i, ii)
            Next
        Else
            xArr2 = .Item(xArr1(i, 1))
            If UBound(xArr1, 2) < xArr2(1) + t - 1 Then
                ReDim Preserve xArr1(1 To UBound(xArr1, 1), 1 To xArr2(1) + t - 1)
                For ii = 2 To t
                    xArr1(1, xArr2(1) + ii - 1) = xArr1(1, ii)
                Next
            End If
            For ii = 2 To t
                xArr1(xArr2(0), xArr2(1) + ii - 1) = xArr1(i, ii)
            Next
            xArr2(1) = xArr2(1) + t - 1: .Item(xArr1(i, 1)) = xArr2
        End If
    Next
End With
OutRng.Resize(xRows, UBound(xArr1, 2)).Value = xArr1
End Sub

3. จากนั้นกด F5 คีย์เพื่อเรียกใช้รหัสนี้เลือกช่วงข้อมูลที่คุณต้องการแปลงแถวที่ซ้ำกันเป็นหลายคอลัมน์ในกล่องโต้ตอบที่โผล่ออกมาดูภาพหน้าจอ:

doc-convert-duplicate-row-column-2

4. คลิก OKและเลือกเซลล์หนึ่งเซลล์ที่คุณต้องการใส่ผลลัพธ์ในกล่องโต้ตอบต่อไปนี้ดูภาพหน้าจอ:

doc-convert-duplicate-row-column-3

5. จากนั้นคลิก OK ข้อมูลที่คุณเลือกถูกแปลงเป็นดังนี้:

doc-convert-duplicate-row-column-4


บทความที่เกี่ยวข้อง:

จะเปลี่ยน / แปลงคอลัมน์และแถวเป็นแถวเดียวได้อย่างไร

จะเปลี่ยน / แปลงคอลัมน์และแถวเป็นคอลัมน์เดียวได้อย่างไร

วิธีการเปลี่ยน / แปลงคอลัมน์เดียวเป็นหลายคอลัมน์ใน Excel


เครื่องมือเพิ่มประสิทธิภาพการทำงานในสำนักงานที่ดีที่สุด

Kutools สำหรับ Excel ช่วยแก้ปัญหาส่วนใหญ่ของคุณและเพิ่มผลผลิตของคุณได้ถึง 80%

  • นำมาใช้ใหม่: ใส่อย่างรวดเร็ว สูตรที่ซับซ้อนแผนภูมิ และสิ่งที่คุณเคยใช้มาก่อน เข้ารหัสเซลล์ ด้วยรหัสผ่าน; สร้างรายชื่อผู้รับจดหมาย และส่งอีเมล ...
  • ซุปเปอร์ฟอร์มูล่าบาร์ (แก้ไขข้อความและสูตรหลายบรรทัดได้อย่างง่ายดาย); การอ่านเค้าโครง (อ่านและแก้ไขเซลล์จำนวนมากได้อย่างง่ายดาย); วางลงในช่วงที่กรองแล้ว...
  • ผสานเซลล์ / แถว / คอลัมน์ โดยไม่สูญเสียข้อมูล แยกเนื้อหาของเซลล์ รวมแถว / คอลัมน์ที่ซ้ำกัน... ป้องกันเซลล์ซ้ำ; เปรียบเทียบช่วง...
  • เลือกซ้ำหรือไม่ซ้ำ แถว; เลือกแถวว่าง (เซลล์ทั้งหมดว่างเปล่า); Super Find และ Fuzzy Find ในสมุดงานจำนวนมาก สุ่มเลือก ...
  • สำเนาถูกต้อง หลายเซลล์โดยไม่เปลี่ยนการอ้างอิงสูตร สร้างการอ้างอิงอัตโนมัติ ถึงหลายแผ่น ใส่สัญลักษณ์แสดงหัวข้อย่อย, กล่องกาเครื่องหมายและอื่น ๆ ...
  • แยกข้อความ, เพิ่มข้อความ, ลบตามตำแหน่ง, ลบ Space; สร้างและพิมพ์ผลรวมย่อยของเพจ แปลงระหว่างเนื้อหาของเซลล์และความคิดเห็น...
  • ซุปเปอร์ฟิลเตอร์ (บันทึกและใช้โครงร่างตัวกรองกับแผ่นงานอื่น ๆ ); การเรียงลำดับขั้นสูง ตามเดือน / สัปดาห์ / วันความถี่และอื่น ๆ ตัวกรองพิเศษ โดยตัวหนาตัวเอียง ...
  • รวมสมุดงานและแผ่นงาน; ผสานตารางตามคอลัมน์สำคัญ แยกข้อมูลออกเป็นหลายแผ่น; Batch แปลง xls, xlsx และ PDF...
  • คุณสมบัติที่ทรงพลังมากกว่า 300 รายการ. รองรับ Office / Excel 2007-2019 และ 365 รองรับทุกภาษา ใช้งานง่ายในองค์กรหรือองค์กรของคุณ ทดลองใช้ฟรี 30 วันเต็ม รับประกันคืนเงิน 60 วัน
kte แท็บ 201905

แท็บ Office นำอินเทอร์เฟซแบบแท็บมาที่ Office และทำให้งานของคุณง่ายขึ้นมาก

  • เปิดใช้งานการแก้ไขและอ่านแบบแท็บใน Word, Excel, PowerPoint, ผู้จัดพิมพ์, Access, Visio และโครงการ
  • เปิดและสร้างเอกสารหลายรายการในแท็บใหม่ของหน้าต่างเดียวกันแทนที่จะเป็นในหน้าต่างใหม่
  • เพิ่มผลผลิตของคุณ 50% และลดการคลิกเมาส์หลายร้อยครั้งให้คุณทุกวัน!
ด้านล่าง officetab

 

จัดเรียงความคิดเห็นโดย
ความคิดเห็น (8)
ยังไม่มีการให้คะแนน เป็นคนแรกที่ให้คะแนน!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ตัวอย่างที่ยอดเยี่ยม - ช่วยฉันประหยัดเวลาได้มาก ขอบคุณมาก !!!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอบคุณมาก!

ขอให้พระเจ้าคุ้มครอง.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันมีความสุขมากที่ได้ทำงานนี้ คุณคือฮีโร่ของฉัน!!!!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ดีจริงๆ. ช่วยฉันประหยัดเวลาได้มาก
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ใช้ได้เฉพาะในกรณีที่มีจำนวนซ้ำกันและเรียกเขาว่า a มันใช้งานไม่ได้หากมีจำนวนที่ซ้ำกัน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สิ่งนี้ใช้ได้ดีสำหรับฉันด้วย Brian ที่ซ้ำกันจำนวนต่างกัน ฉันมีปัญหากับการแสดงซ้ำครั้งแรกสองครั้งในผลลัพธ์ของฉัน แต่นั่นก็เล็กน้อยมาก ฉันหวังว่าฉันจะรู้วิธีทำให้คัดลอกผลลัพธ์ที่ซ้ำกันในรูปแบบที่คั่นด้วยจุลภาคแทนคอลัมน์ใหม่สำหรับแต่ละคอลัมน์
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี! ใครก็ได้ช่วยฉันที...

ฉันพบรหัสนี้เพื่อเปลี่ยนแถวของข้อมูลที่มี ID ที่ไม่ซ้ำกันเป็นแถวเดียวต่อ ID ที่มีหลายคอลัมน์ (คอลัมน์ขั้นต่ำ 5 - รวมถึง ID, คอลัมน์สูงสุด 25 - รวม ID) จากนั้นจะลบแถวที่ซ้ำกันทั้งหมดตาม ID ที่ไม่ซ้ำ โค้ดประเภทนี้ใช้งานได้ ปัญหาเดียวคือไม่ได้ถ่ายโอนข้อมูลสองคอลัมน์

จำนวนแถวของข้อมูลต่อ ID ที่ไม่ซ้ำนั้นแตกต่างกันไปตั้งแต่ 1 ถึง 6 (ดังนั้น ฉันจึงต้องการขั้นต่ำ 5 คอลัมน์ถึงสูงสุด 25 คอลัมน์)

มีข้อมูล 20,000 แถว แต่ฉันสามารถแบ่งข้อมูลตามแผนกได้อย่างน้อย 5,000 แถวของข้อมูล และเรียกใช้แต่ละแผนกแยกกัน

ขอบคุณสำหรับความช่วยเหลือของคุณ!


ข้อมูลของฉันมีลักษณะเช่นนี้

ABCDE
ID คำอธิบาย รัฐ # DATE
3 CPR US 567 6/19/2019
3 AET US 568 6/19/2019
4 CPR US 6/19/2019
4 AET
4 AED

เป็นต้น

อยากได้แบบนี้บ้าง

ABCDEFGHIJKLM ฯลฯ.....
ID คำอธิบาย รัฐ # วันที่ คำอธิบาย รัฐ # วันที่ คำอธิบาย รัฐ # วันที่
3 CPR US 567 6/19/2019 AET US 568 6/19/2019
4 CPR US AET US AED US

นี่คือรหัสที่ฉันพบว่าทำงานประเภทนั้น (อาจเป็นเพราะสิ่งที่เขียนขึ้น มันมีเฉพาะข้อมูลในคอลัมน์ D และ E และละเว้นคอลัมน์ B & C... ปล่อยให้คอลัมน์ว่างสองคอลัมน์ต่อชุดข้อมูล ฉันชอบที่ มันจะลบรายการที่ซ้ำกันหลังจากย้ายข้อมูลทั้งหมดไปยังคอลัมน์เดียวตาม ID ที่ไม่ซ้ำกัน

ที่อยู่ย่อย_To_Columns()

หรี่แถวสุดท้ายตราบเท่าที่
Dim addressCount เป็นจำนวนเต็ม: addressCount = 0

lastRow = Range("A" & Rows.Count).End(xlUp).Row

สำหรับฉัน = แถวสุดท้ายถึง 3 ขั้นตอน -1
ถ้า Cells(i, 1).Value = Cells(i - 1, 1).Value แล้ว
addressCount = addressCount + 1
ช่วง(เซลล์(i - 1, 10), เซลล์(i - 1, (จำนวนที่อยู่ * 5) + 10)) = ช่วง(เซลล์(i, 4), เซลล์(i, (จำนวนที่อยู่ * 5) + 4)). ค่า
แถว(i).ลบ
อื่น
addressCount = 0
End If
ต่อไปฉัน

ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีทุกคน

ฉันลองใช้รหัสนี้แล้วและใช้งานได้สำเร็จ

คำถามของฉันคือ ฉันจะทำเช่นเดียวกันโดยใช้ Ms Access สำหรับข้อมูลที่ใหญ่กว่าได้อย่างไร ฉันจะทำให้คิวรีทำงานเหมือนกันหรือไม่

ขอบคุณมาก .
มีความคิดเห็นยังไม่มีการโพสต์ที่นี่
แสดงความคิดเห็นของคุณ
โพสต์ในฐานะแขก
×
ให้คะแนนโพสต์นี้:
0   ตัวอักษร
สถานที่แนะนำ