我只會 VBA
(可以等高手用 SUMPRODUCT/INDEX/MATCH 解答)
大致如下
寫個迴圈 i 從 2..25
若 Ai有資料就記錄列索引值 r (eg.2,10,16)
若 Ai沒資料就複製 Ar..Ir 到 Gi 貼上
原始資料
執行結果
請參閱 : Excel-快速填入和第一個儲存格相同的內容
剩下的工作就剪剪貼貼、篩選
自己再改改吧
Sub test()
Dim brr
arr = Range("a2:o" & [c1048576].End(xlUp).Row)
For i = 1 To UBound(arr)
If arr(i, 1) <> "" Then
head_er = i
count_header = count_header + 1
Else
x = 1
For y = 7 To 15
arr(i, y) = arr(head_er, x)
x = x + 1
Next
End If
Next
x = 1
ReDim brr(1 To UBound(arr) - count_header, 1 To 15)
For i = 1 To UBound(arr)
If arr(i, 1) = "" Then
For y = 1 To 15
brr(x, y) = arr(i, y)
Next
x = x + 1
End If
Next
[c1048576].End(xlUp).Offset(3, -2).Resize(UBound(brr, 1), UBound(brr, 2)) = brr
End Sub
這個是保留原有資料的做法,因為也不太建議覆寫原資料.建議答案可放另一張工作表比較好.