ฉันมีรหัสต่อไปนี้:
Sub CopyTest()
Dim skuRow As Integer
Dim curSku As String
Dim numSkus As Integer
Dim impType As String
Dim copyRows As Integer
Dim supAcc As String
Dim arr_TotalList As Variant
Dim locs As String
Dim colorMax As String
With ActiveSheet
copyRows = 3
impType = "-LE"
supAcc = ""
numSkus = Sheets(2).Cells(Sheets(2).Rows.Count, "A").End(xlUp).Row
skuRow = 1
Rows("1:" & copyRows).Copy
For i = copyRows + 1 To (copyRows * numSkus) + 1 Step copyRows
arr_TotalList = Split(CurVal, "|")
colorMax = Sheets(2).Range("C" & skuRow).Value
If colorMax = "" Then
colorMax = "4"
End If
curSku = Sheets(2).Range("A" & skuRow).Value
locs = Sheets(2).Range("B" & skuRow).Value
arr_TotalList = Split(locs, "|")
Range("A" & i).Select
ActiveSheet.Paste
For n = 0 To copyRows - 1 Step 1
If n = 0 Then
Range("B" & i + n) = supAcc & curSku & impType
Range("E" & i + n) = colorMax
Else
Range("G" & i + n) = arr_TotalList(n - 1)
Range("B" & i + n) = supAcc & curSku & impType
End If
Next n
skuRow = skuRow + 1
Next i
End With
End Sub
รหัสนี้โดยทั่วไปใช้แม่แบบข้อมูลในแผ่นงาน 1 และคัดลอกแม่แบบนั้นและใช้ข้อมูลจากแผ่นงาน 2 จำนวนครั้งที่ตั้งไว้ใน "copyRows"
ตอนนี้ฉันจะต้องปรับแม่แบบในแผ่นที่ 1 ทุกครั้งที่ฉันเปลี่ยนหมายเลข "copyRows" ตัวอย่างเช่นถ้า copyRows เป็น 4 ในชีต 1 เทมเพลตจะมี 4 แถวของสิ่งที่กำหนดไว้ล่วงหน้าจำเป็นต้องใช้แถวแรกแถวต่อไปนี้จะยึดตาม "|" ตัวคั่นของค่าในข้อมูลของชีต 2 ตัวอย่างเช่นแผ่นงาน 2 คอลัมน์ B มีข้อมูลเช่น "Test1 | Test2 | Test3"
ฉันกำลังพยายามทำให้รหัสนี้เป็นแบบอัตโนมัติอีกเล็กน้อยดังนั้นฉันไม่ต้องเปลี่ยน copyRows ด้วยตนเองและเพิ่มหรือลบแถวเพิ่มเติมในแผ่นงานแม่แบบ ในแผ่นงานเทมเพลตฉันต้องการเพียงแค่มีสองแถวโดยจำเป็นต้องใช้ครั้งแรกส่วนที่สองจะขึ้นอยู่กับจำนวนของ "|" ค่าตัวคั่น
ฉันกำลังคิดที่จะเพิ่มสูตรนับสำหรับ copyRows เช่น =LEN(Sheets(2).B:B)-LEN(SUBSTITUTE(Sheets(2).B:B,"|",""))
จากนั้นเพิ่ม 1 ฉันจะใส่สูตรใน copyRows อย่างไร
arr_TotalList
กำหนดไว้เมื่อคุณตั้งค่า copyRows
ขึ้นคุณสามารถตั้งค่า copyRows = 1 + UBound(Split(Sheets(2).Range("B" & skuRow).Value))
แม้
ubound(arr_TotalList)
ควรเป็นขอบเขตบนของดัชนีของ arr_totalList หลังจากที่คุณดำเนินการแยกใน "|" ถ้าฉันจำได้อย่างถูกต้อง Ubound จะรายงานดัชนีตามปกติ นับ ซึ่งโดยปกติแล้ว 1 มากกว่าดัชนี (เช่นx(Ubound(x)-1)
จะเป็นดัชนีสูงสุด แต่ในตัวแปรจะส่งคืนดัชนีสูงสุดแทน (เช่นนั้นx(ubound(x)
สูงสุด) [ตรวจสอบนี้]