如何在Excel中從多個工作表建立唯一值列表


如果您使用包含許多頁面的大型 Excel 工作簿處理資料,您經常會發現自己需要組合和分析來自其他工作表的資料。一個常見的任務是從多個工作表中刪除任何重複值並生成唯一值的列表。本文將為您提供分步說明和實用技巧,幫助您組合資料並從多個工作表中提取唯一值,無論您對 Excel 的熟悉程度如何。在結束時,您將掌握完成此任務所需的技能和資源,從而節省時間和精力,同時完成您的資料分析任務。所以讓我們開始吧,釋放 Excel 的潛力,從多個工作表生成完整的唯一值列表!

從多個工作表建立唯一值列表

這裡我們將首先建立一個 VBA 模組,然後執行它來完成任務。讓我們來看一個簡單的過程,學習如何在 Excel 中從多個工作表建立唯一值列表。

步驟 1

考慮任何 Excel 工作簿,其中您在多個工作表的 A 列中都有資料。

首先,右鍵單擊工作表名稱,然後選擇“檢視程式碼”以開啟 VBA 應用程式。

步驟 2

然後單擊“插入”,選擇“模組”,然後將下面的程式碼複製到文字框中。

插入 > 模組 > 複製。

示例

Sub SheelsUniqueValues()
Dim xObjNewWS As Worksheet
Dim xObjWS As Worksheet
Dim xStrAddress As String
Dim xIntRox As Long
Dim xIntN As Long
Dim xFNum As Integer
Dim xMaxC, xColumn As Integer
Dim xR As Range
xStrName = "Unique value"
Application.ScreenUpdating = False
xMaxC = 0
Application.DisplayAlerts = False
For Each xObjWS In Sheets
   If xObjWS.Name = xStrName Then
      xObjWS.Delete
      Exit For
   End If
Next
Application.DisplayAlerts = True
For xFNum = 1 To Sheets.Count
   xColumn = Sheets(xFNum).Cells.Find(What:="*", after:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
   If xMaxC < xColumn Then
      xMaxC = xColumn
   End If
Next xFNum
Application.DisplayAlerts = True
Set xObjNewWS = Sheets.Add(after:=Sheets(Sheets.Count))
xObjNewWS.Name = xStrName
For xColumn = 1 To xMaxC
   xIntN = 1
   For xFNum = 1 To Sheets.Count - 1
      Set xR = Sheets(xFNum).Columns(xColumn)
      If TypeName(Sheets(xFNum).Columns(xColumn).Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious)) <> "Nothing" Then
         xIntRox = xR.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
         Sheets(xFNum).Range(Cells(1, xColumn).Address & ":" & Cells(xIntRox, xColumn).Address).Copy
         Cells(xIntN, xColumn).PasteSpecial xlValues
         xIntN = xIntRox + xIntN + 1
      End If
   Next xFNum
   If xIntRox - 1 > 0 Then
   xIntRox = xIntN - 1
   xStrAddress = Cells(1, xColumn).Address & ":" & Cells(xIntRox, xColumn).Address
   Range(xStrAddress).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
   Range(xStrAddress).Copy
   Cells(1, xColumn + 1).PasteSpecial xlValues
   Range(xStrAddress).AdvancedFilter Action:=xlFilterInPlace, Unique:=False
   Columns(xColumn).Delete
   Range(xStrAddress).Sort key1:=Cells(1, xColumn), Header:=xlNo
   End If
Next xColumn
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
    

步驟 3

然後單擊 F5 完成任務。然後您將看到 A 列中的所有唯一值都將列出。

結論

在本教程中,我們使用了一個簡單的示例來演示如何在 Excel 中從多個工作表建立唯一值列表,以突出顯示特定資料集。

更新於:2023年7月12日

826 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告