如何在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 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.