响应号召:c1先空着 Sub 组合() Dim arr, r&,c&,st arr = Range("a1").CurrentRegion.Value For r = 1 To UBound(arr) For c = 1 To 2 st = IIf(st = "", "", st) & IIf(arr(r, c) <> "", "-" & arr(r, c), "") Next c, r arr = Application.Transpose(Split(st, "-")) Range("c1").Resize(UBound(arr), 1) = arr End Sub
来晚了, 凑个函数的 Function ArrayRemoveBlank(r As Range) As Variant Dim result As Variant, i As Integer, c ReDim result(1 To r.Cells.Count) As Variant For Each c In r.SpecialCells(xlCellTypeConstants) i = i + 1 result(i) = c.Value Next ArrayRemoveBlank = result End Function