excel查询在行到单元格上方追加

时间:2015-04-15 05:03:59

标签: excel excel-vba excel-formula vba

我已经尝试了concatenate功能,但它并没有真正有用。

我正在努力完成,所以这是截图/图片 enter image description here

基本上我需要能够为分数输入数据,然后让单元格根据用户及相应图块的分数自动填充数据,我的困惑是如果/如果他们有多个用户则如何执行此操作在相同的瓷砖上。

1 个答案:

答案 0 :(得分:0)

好的......我不知道你是否有Tile 1的机制知道它是Tile 1等,但我所做的是将数字放在同一个单元格中的另一张纸上。即在工作表Tiles上,单元格B181。通过这种方式,我们可以引用该单元格而不是公式中的任何硬编码值...

我还决定,如果没有该分数的名称,那么我们只需要名称(例如Tile 1

因此,这些可以将公式的第一部分写入B18并复制到范围B18:F31

=IF(Tiles!B18="","",IF(ISERROR(MATCH(Tiles!B18,$B$7:$H$7,0)),"Tile "&Tiles!B18,...))

这是做什么的:

  • 检查Tiles表格 - 如果相应的单元格为空,那么这不是图块,我们只是放""
  • 使用MATCH查看该分数是否由任何用户持有 - 如果未找到,则会出现错误,因此IF(ISERROR(...))只返回磁贴名称
  • ...是两个选项的来源......

选项1 - Loooong公式
...替换为:

MID(IF($B$7=Tiles!B18,", "&$B$2,"")&IF($C$7=Tiles!B18,", "&$C$2,"")&IF($D$7=Tiles!B18,", "&$D$2,"")&IF($E$7=Tiles!B18,", "&$E$2,""),3,9999)

...并为您的22位玩家复制每个所需列的&IF($E$7=Tiles!B18,", "&$E$2,"")部分。

所以单位是“如果玩家的得分与牌号相同,请给我”,名称“否则为空白”,我们将其加入&运营商。
这包含在MID(...,3,9999)中,所以我们在我们找到的第一个名称的开头摆脱了“,”(联合的IF语句会给出例如“,Aaron,无限用户”)。 / p>

这个选项有点痛苦写(并阅读!)但它只需要做一次,公式可以复制和粘贴...

选项2 - VBA函数和数组公式

Public Function JOIN(rng As Variant, Optional separator = ", ") As String
  JOIN = ""
  Dim v As String
  For Each c In rng
    If IsObject(c) Then
      v = c.Text
    Else
      v = c
    End If
    If v <> "" Then
      If JOIN = "" Then
        JOIN = v
      Else
        JOIN = JOIN & separator & v
      End If
    End If
  Next c
End Function

此函数将连接一系列单元格的值或字符串数​​组。将它与数组公式一起使用(使用 Ctrl + Shift + Enter 在Excel中输入)意味着我们可以进行条件连接... <登记/> 所以...变为:

JOIN(IF($B$7:$H$7=Tiles!B18,$B$2:$H$2,""))

为此,将根据图块编号检查评分范围$B$7:$H$7中的每个值。如果不匹配,我们返回“”,否则返回相应的名称(范围$B$2:$H$2)。这将为我们提供一系列空格和名称JOIN将加入......

此选项表示启用宏的工作簿并使用“更复杂”的数组公式。但阵列公式很棒,我建议每个人都和他们一起玩;-)。 cpearson有一个很好的介绍:http://www.cpearson.com/excel/arrayformulas.aspx

玩得开心!