【问题标题】:Use pivot table cell value to lookup same value in original worksheet使用数据透视表单元格值在原始工作表中查找相同的值
【发布时间】:2015-08-29 03:19:24
【问题描述】:

在我的原始数据工作表中,我创建了一个 VBA 脚本,它为一列“A”列中的单元格值创建一个超链接。

运行脚本后“A”列单元格中显示的文本是原始单元格值。这个脚本工作得很好。

然后使用此工作表数据创建数据透视表。当然,超链接在数据透视表中消失了。

我想做的是点击数据透视表中的一个单元格值,让它在原始工作表中查找该值,然后打开超链接。

我使用的是 Excel 2013,数据透视表是经典的数据透视表视图。

【问题讨论】:

  • 欢迎来到 Stackoverflow。你试过什么了?这应该可以帮助您入门:Worksheet.SelectionChange Event (Excel)。当该事件触发时,让它运行搜索(例如 WorksheetFunction.Vlookup)。
  • 我还没有真正尝试过任何事情,因为坦率地说,我不知道从哪里开始!

标签: excel vba


【解决方案1】:

解决方案:假设这是您的源表,名为Sheet1

Sheet1

单元格A2 正在链接到一个网站。第二张表Sheet2 包含Sheet1 中数据的数据透视表:

Sheet2

如果我正确理解您的请求,您希望单击Sheet2 中的“Peter”以打开链接在Sheet1 中包含“Peter”的单元格中的 URL。您可以通过将以下代码添加到Sheet2 来完成此操作(右键单击选项卡行中的Sheet2 并选择“查看代码”)。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Columns.Count = 1 And Target.Rows.Count = 1 And Target.Column = 1 Then
        Dim SourceSheet As Worksheet
        Dim SourceRange As Range
        Dim HyperlinkAddress As Range

        Set SourceSheet = ThisWorkbook.Sheets("Sheet1")
        Set SourceRange = SourceSheet.Range("A:A")

        ' Find cell address in Sheet1
        On Error Resume Next
        Set HyperlinkAddress = SourceSheet.Range("A" & _
            Application.WorksheetFunction.Match(Target.Value, SourceRange, 0))
        If HyperlinkAddress.Hyperlinks.Count = 1 Then
            ' Click hyperlink
            ThisWorkbook.FollowHyperlink (HyperlinkAddress.Hyperlinks(1).Address)
        End If
    End If
End Sub

解释:当您在 Excel 工作表中选择不同的单元格时,会触发事件 Worksheet_SelectionChange。上面的代码将首先检查您是否在 A 列中选择了一个(并且只有 1 个)单元格,如果您选择了,则在 Sheet1 中找到与包含您单击的单元格值的单元格对应的行号。找到后,它会验证单元格是否包含链接地址,如果包含,请单击它。

【讨论】:

  • nhee - 这看起来很有希望!为了回答您的问题,我确实想单击 sheet2 中的一个值并让它在 sheet1 中查找相应的值/链接。当我明天有机会上班时,我会试一试这段代码并发表回复。再次感谢您提供的非常有前途的代码!
  • 好的,这就是它的作用。请检查。
  • 我在工作并尝试使用代码。在我输入之后,按照给出的说明,我得到一个窗口,要求输入宏名称。如果我输入一个,就会打开一个新模块。如果我将代码放在打开的新模块中并尝试运行它,我会再次获得宏窗口并询问宏名称。仅供参考,我们无法在我们的系统上保存宏; IT 安全人员已锁定该功能。
  • 如果您不能保存宏,这将很困难... 是否可以在另一台计算机上执行此操作,然后将文件传输回办公室计算机?您知道您不需要手动运行宏,对吧?当您单击 Sheet2 的 A 列中的单元格时,它将自行运行。
  • 不,在其他地方保存和转移并不是一个真正的选择。但是你的最后一句话很好读,因为我不知道!这就是我的VBA技能有多差!!!无论如何,将代码放入模块并单击一个值就像一个魅力。非常感谢你的帮助。言语无法表达我的感激之情。如果可以的话,你是从哪里学到这些东西的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
  • 1970-01-01
  • 1970-01-01
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多