0

请帮助我在 Excel 中实现多个动态保管箱:

  • 在表 1 上有一个填充表
  • 在工作表 2 上有一个具有相同列标题的空表
  • 在工作表 2 上,表格由用户填写,最后一列除外
  • 在最后一列的工作表 2 上,每一行都应该有一个保管箱。此 dropbox 必须包含从表 1 中的同一列中选择的值。选择应仅考虑表 1 中的行,这些行与已填充到 dropbox 所在的表 2 行中的字段匹配。请参见下面的示例。

整个事情应该不需要额外的用户交互,并且除了保管箱的值之外,还应该允许插入任意值。


例子

表格1

品牌 | 中央处理器 | 型号
品牌1 | 处理器1 | modelX
品牌1 | 处理器1 | 型号
品牌1 | 处理器2 | modelZ
品牌2 | 处理器2 | 型号H 品牌2 | 处理器2 | 型号K

表 2

品牌 | 中央处理器 | 型号
品牌1 | 处理器1 | [DROPBOX1]
品牌2 | 处理器2 | [投递箱2]

解释

[DROPBOX1] 应该包含 modelX 和 modelY
[DROPBOX2] 应该包含 modelH 和 modelK


我设法通过专用表中的命名范围创建了一个这样的保管箱,仅此而已。我不能对任意数量的行使用相同的系统。 整个事情都在尖叫 Access,但实施细节来自上面,所以 Excel 是(谢谢管理)。

谢谢。

4

2 回答 2

0

我在跟踪您时遇到了一些麻烦,但似乎可以使用“数据”选项卡上的“数据验证”进行快速设置。

  1. 从数据选项卡中选择数据验证
  2. 选择数据验证
  3. 从允许中选择:“列表”
  4. 在源代码下,有两种方法可以继续...您可以突出显示您希望在下拉列表中看到的列范围。您可以突出显示左上角的列/行名称所在的列范围,突出显示并重命名,然后使用该名称作为源。

    我通常会创建一个额外的选项卡,隐藏/保护它,然后从那里创建我的下拉表。

于 2013-06-14T13:10:07.730 回答
0

我有幸在 Microsoft 论坛上获得了第一位欧盟 MVP Bill Manville先生的支持。
这是解决问题的宏:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim iCol as Integer
  Dim rTable1 As Range
  If Target.Cells.Count<>1 Then Exit Sub
  Set rTable1=ThisWorkbook.Sheets("Sheet1").Range("A1").CurrentRegion
  With Me.Range("A1").CurrentRegion
    If Target.Column<>.Columns.Count Then Exit Sub
    rTable1.AutoFilter
    For iCol = 1 To .Columns.Count-1
       rTable1.AutoFilter iCol, Me.Cells(Target.Row, iCol)
    Next
    If rTable1.Columns(1).SpecialCells(xlVisible).Count>1 Then
      rTable1.Columns(.Columns.Count).Offset(1).Resize(rTable1.Rows.Count-1).SpecialCells(xlVisible).Name = "ValidationList"
    Else
      MsgBox "The combination in this row is not matched"
    End If
    rTable1.AutoFilter
  End With
End Sub

他还很友好地提供了一个工作示例
,要使这些工作,源表必须是有序的,因为数据验证只会考虑将命名范围的第一部分拆分为多个部分。

于 2013-06-18T12:20:19.480 回答