从下拉列表中自动填充多行

时间:2016-09-18 14:06:54

标签: excel vba

我一直在互联网上搜索几个小时,找不到任何问题来回答我的问题,所以我想我会在这里试试,希望有人能指出我正确的方向。以下是我要完成的任务:......

我正在为我当地的飞镖联盟制作一张自我计算得分表。除了团队数据外,工作表即将完成。

示例: 我在单元格 A4 中有一个下拉列表,其中包含我所在部门的8个团队

列表通过另一个工作表的数据验证填充。此另一个工作表还包含8列(每个团队1个),其中包含该团队中球员的名称。每列都以团队命名。

我希望能够从 A4 列表中选择一个团队,并自动将其玩家插入 A24 A36 的单元格中。

如果有人知道如何做到这一点或知道有关让我入门的教程,我们将不胜感激。

感谢所有回复的人。

我需要在上面的解释中做出纠正......我应该在发布之前意识到错误......我道歉

  1. 主场的小区A5和客队的K5
  2. 下拉内容位于名为“团队”
  3. 的第二张纸上
  4. 玩家内容位于第3页,名为“玩家”,第一行中的团队名称为标题。
  5. 我附上了手动填写的工作表副本,以显示我想要做的事情,根据在下拉列表中选择的团队,在A列和I列中填充第58至69行。

    我正用这个把头发拉出来。!

    再次感谢。Download Worksheet from Dropbox

2 个答案:

答案 0 :(得分:0)

OP编辑实际数据结构后

编辑

将以下代码放在“主要”工作表的代码窗格中(即在其单元格“A5”和“K5”中具有下拉列表的代码窗格中:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(False, False) <> "A5" And Target.Address(False, False) <> "K5" Then Exit Sub '<-- exit if changed cell is not "A4"

    With Range("A58:A69").Offset(, IIf(Not Intersect(Target, Columns("K")) Is Nothing, 8, 0)) '<--| reference range you want to write result corresponding to validation cell choice (offset 8 columns if target is "K5")
        On Error GoTo ExitSub '<-- properly handel possible errors and be sure to restore events handling you're going to disable next line
        Application.EnableEvents = False '<--| disable events handling not to have this sub got called in an infinite recursive loop
        .Value = Worksheets("Players").Rows(1).Find(what:=Target.Value, LookIn:=xlValues, lookat:=xlWhole).Offset(1).Resize(.Rows.Count).Value '<--| write in referenced range the content of Player worksheet range in rows 2 to 12 in column whose header in row 1 matches target value
    End With
ExitSub:
    Application.EnableEvents = True '<-- restore event handling

End Sub

可以按如下方式访问工作表的代码窗格:

  • 打开VBA编辑器(在Excel界面中为ALT + F11)

  • 打开项目经理(CTRL + R)窗口

  • 项目管理器窗口中的
  • 展开“Microsoft Excel对象”节点

  • 双击“主要”工作表

  • 对应的树项目
  • 工作表代码窗格不在左侧

  • 复制上面的代码并将其粘贴到代码窗格中

答案 1 :(得分:0)

我要感谢大家的帮助。它让我想到了选择......当我终于找到一个如此简单的答案时,我从椅子上掉了下来!

它就像一个魅力!

<强> = INDEX(玩家$ A:$ H,ROWS($ A $ 1:$ A2),MATCH(A $ 5中,玩家$ A $ 1:$ H $ 1日))

还有一些小问题可以解决,但它可以完成任务!

再次感谢大家!