確保列源數據的右邊是空白。輸出將會去那裏。
將這個程序在一個標準的代碼模塊並運行它:
Public Sub CullDistinct()
Dim rSrc As Range, lRws&, lCls&, lOut&, sOut$, sMn1$, sRow1$
Set rSrc = [a1].CurrentRegion
sRow1 = rSrc.Resize(1).Address(0, 1)
lRws = rSrc.Rows.Count
lCls = rSrc.Columns.Count
lOut = lCls + 2
sOut = Split(Cells(, lOut).Address, "$")(1)
sMn1 = Split(Cells(, lOut - 1).Address, "$")(1) & 1: sMn1 = sMn1 & ":" & sMn1
With Range(sOut & 1)
.FormulaArray = "=IFERROR(INDEX(" & sRow1 & ",MATCH(,COUNTIF($" & sMn1 & "," & sRow1 & "),)),"""")"
.Copy .Offset(, 1).Resize(, lCls - 1)
.Resize(, lCls).Copy .Offset(1).Resize(lRws - 1)
With .Resize(lRws, lCls): .Value = .Value: End With
End With
End Sub
好期待它感謝您的努力 –
嘿抱歉,但我不認爲提前在VBA剛開始它可以實現在下面的表格請。 https://www.dropbox.com/s/z6lga80zz7blutl/Pivot1.xlsm?dl=0 –
@Santosh然後閱讀VBA。我強烈建議您首先閱讀[tag:vba],[tag:excel]和[tag:excel-vba]的維基,然後在各個鏈接上進行操作。 –