สร้างโค๊ด VBA เพื่อรวมชีสแต่ว่าข้อมูลชีสจัดตำแหน่งไม่เป็นรูปแบบไม่เหมือนตารางหลัก
Posted: Mon Jul 15, 2024 10:43 am
สร้างโค๊ด VBA เพื่อรวมชีสแต่ว่าข้อมูลชีสจัดตำแหน่งไม่เป็นรูปแบบที่คล้ายกันกับตารางหลัก
เพื่อรวมทุกชีสมาไว้ในชีสเดียวกัน ชีส Main คือชีสหลัก โดยมีหัวข้อเก็บข้อมูลจาก A1:V1
แต่รูปแบบข้องชีสต่าง ๆ ไม่เหมือนกันต่างกันแค่ ภาค และจังหวัด
เช่นชีส ProductUpdate A1 คือหัวข้อ =ชื่อ A2 จะเป็นภาค และ A3 คือจังหวัด แล้วถัดลงมาจากจังหวัดก็คือรายชื่อที่ต้องการเก็บ
จะเป็นรูปแบบนี้ทุกชีส
ฉันจะเขียนสูตรยังไง เมื่อ A1:A100
มีคำว่า ภาคให้นำข้อมูลไปลงที่ ชีส Main A1
โค๊ดที่สร้างได้ข้อมูลยังไม่ตรงครับมันวนซ้ำหลายรอบ
ต้องปรับตรงไหน
รบกวนอาจารย์ด้วย
และขอบพระคุณล่วงหน้าครับ
เพื่อรวมทุกชีสมาไว้ในชีสเดียวกัน ชีส Main คือชีสหลัก โดยมีหัวข้อเก็บข้อมูลจาก A1:V1
แต่รูปแบบข้องชีสต่าง ๆ ไม่เหมือนกันต่างกันแค่ ภาค และจังหวัด
เช่นชีส ProductUpdate A1 คือหัวข้อ =ชื่อ A2 จะเป็นภาค และ A3 คือจังหวัด แล้วถัดลงมาจากจังหวัดก็คือรายชื่อที่ต้องการเก็บ
จะเป็นรูปแบบนี้ทุกชีส
ฉันจะเขียนสูตรยังไง เมื่อ A1:A100
มีคำว่า ภาคให้นำข้อมูลไปลงที่ ชีส Main A1
โค๊ดที่สร้างได้ข้อมูลยังไม่ตรงครับมันวนซ้ำหลายรอบ
ต้องปรับตรงไหน
รบกวนอาจารย์ด้วย
และขอบพระคุณล่วงหน้าครับ
Code: Select all
Sub ConsolidateSheets()
Dim ws As Worksheet
Dim mainWs As Worksheet
Dim lastRow As Long
Dim copyRow As Long
Dim dataStartRow As Long
Set mainWs = ThisWorkbook.Sheets("Main")
mainWs.Range("A2:V100").ClearContents
copyRow = 2
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> mainWs.Name Then
For i = 1 To ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
If ws.Cells(i, 1).Value Like "*ภาค*" Then
dataStartRow = i + 2
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
ws.Range(ws.Cells(dataStartRow, 1), ws.Cells(lastRow, 22)).Copy
mainWs.Range("A" & copyRow).PasteSpecial Paste:=xlPasteValues
copyRow = mainWs.Cells(mainWs.Rows.Count, "A").End(xlUp).Row + 1
End If
Next i
End If
Next ws
Application.CutCopyMode = False
End Sub