我相信以下內容應該適合你。
Sub strata_data()
Dim t As Long, s As Long, rw As Long
Dim vTEMPs As Variant, vSAMPLEs As Variant, vOVENs As Variant
Application.ScreenUpdating = False
With Worksheets("Start2") '<~~set this worksheet name correctly
For rw = .Cells(Rows.Count, 1).End(xlUp).Row To 6 Step -1
vSAMPLEs = Split(.Cells(rw, 2).Value2, Chr(44))
vTEMPs = Split(.Cells(rw, 5).Value2, Chr(44))
vOVENs = Split(.Cells(rw, 6).Value2, Chr(44))
For t = UBound(vTEMPs) To LBound(vTEMPs) Step -1
.Cells(rw + 1, 1).Resize(2 + (t = LBound(vTEMPs)), 1).EntireRow.Insert
.Cells(rw, 1).Resize(1, 7).Copy Destination:=.Cells(rw + 1 + (t = LBound(vTEMPs)), 1)
.Cells(rw + 1 + (t = LBound(vTEMPs)), 5) = CLng(vTEMPs(t))
.Cells(rw + 1 + (t = LBound(vTEMPs)), 6) = vOVENs(t)
.Cells(rw + 1 + (t = LBound(vTEMPs)), 5).NumberFormat = "0° \C"
.Cells(rw + 2 + (t = LBound(vTEMPs)), 1).Resize(1, 25).ClearContents
.Cells(rw + 2 + (t = LBound(vTEMPs)), 1).Resize(1, 25).Interior.Pattern = xlNone
If CBool(UBound(vSAMPLEs)) Then
.Cells(rw + 1 + (t = LBound(vTEMPs)), 1).Resize(1, 25).Copy
.Cells(rw + 1 + (t = LBound(vTEMPs)), 1).Resize(UBound(vSAMPLEs), 25).Insert Shift:=xlDown
For s = UBound(vSAMPLEs) To LBound(vSAMPLEs) Step -1
.Cells(rw + 1 + s + (t = LBound(vTEMPs)), 2) = vSAMPLEs(s)
Next s
End If
Next t
Next rw
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
列G列右邊有一些列,我不知道他們是否是種子數據,所以我讓他們一個人留下。如果不需要,您可以使用簡單的.ClearContents
命令清除它們。
嗨,我已經重命名工作表,但我得到一個錯誤,說下標超出範圍?謝謝 – vividillusion
我站好了!代碼確實起作用,我沒有正確命名它!這是非常完美的,但是,我沒有很好地解釋,這會在每個樣本之後插入一行,而每個樣本塊只需插入一行。 所以A,B,C,D,空行,A,B,C,D,空行! 非常感謝你! – vividillusion
我在開始前有一個空間,我沒有看到,問題解決了! – vividillusion