【问题标题】:Dropdown List in Excel to Show Data from another sheetExcel中的下拉列表以显示另一张工作表中的数据
【发布时间】:2017-01-16 14:02:15
【问题描述】:

我有一个数据表,不同的列中有不同的月份,每一行都有一个唯一的标识符(在本例中是一个名称)。

有没有办法让我在另一张工作表中有一个下拉框,这样我就可以选择一个日期,然后工作表会返回包含这些日期的数据中的所有条目?

这是我正在使用的数据类型的一个非常基本版本的链接: https://docs.google.com/spreadsheets/d/1LgTKxXuQ9hdq-ruJWcto7A002ks4R2koGx0vtiHZHXQ/edit?usp=sharing

【问题讨论】:

  • 是的,有办法做到这一点。你有没有自己尝试过什么?
  • 是的,我试过了。我已经度过了整个上午。我最初尝试使用数据透视表,但无法获得我想要的结果。
  • 分享一些示例数据和预期输出。如果您可以共享一个示例 excel 文件会更好。一些输入和输出。
  • 它需要在单独的表中吗?如果不是,我认为表格顶部的过滤器应该可以解决问题。
  • @Wujaszkun 过滤器不起作用。日期在不同的列中。

标签: excel excel-formula spreadsheet


【解决方案1】:

我想出了这个小代码:

Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)

Dim lastRow, targetCell, sourceRng, cell, nameRng, startRng, ddownCell As Range

Set ddownCell = Worksheets("Sheet2").Range("B1")
Set sourceRng = Worksheets("Sheet1").Range("C2:O10")
Set nameRng = Worksheets("Sheet1").Range("A2:A10")
Set startRng = Worksheets("Sheet1").Range("B2:B10")
Set targetCell = Worksheets("Sheet2").Range("A5")

If Not Application.Intersect(ddownCell, Range(Target.Address)) Is Nothing Then

With Worksheets("Sheet2")                               '
    lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row    '
    If lastRow > 3 Then                                 'clears the content of previous search
        .Range("A5:B" & lastRow).ClearContents          '
    End If                                              '
End With                                                '

For Each cell In sourceRng
    If cell.Value = ddownCell.Value Then
         targetCell.Value = nameRng.Rows(cell.Row - 1).Value
         targetCell.Offset(0, 1).Value = startRng.Rows(cell.Row - 1).Value
         Set targetCell = targetCell.Offset(1, 0)
    End If

Next cell
End If
End Sub

工作表名称和单元格范围已根据您发布的示例进行了调整,需要进行调整。

此代码应粘贴到 VBA 编辑器中的 Sheet2 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    相关资源
    最近更新 更多