Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何列出搜索值的所有可能性?_Excel_Excel Formula_Vba - Fatal编程技术网

Excel 如何列出搜索值的所有可能性?

Excel 如何列出搜索值的所有可能性?,excel,excel-formula,vba,Excel,Excel Formula,Vba,在我的项目中,我们只是简单地给同样有名字的房间指定位置代码。但可能会有一堆相同的命名位置,具有不同的规范 例如:位置代码:B2-001(B列) 位置名称:Loby(C列) “B2”代表楼层编号和“-”后面的数字,简单地给该房间以形成位置代码,该位置代码对于该房间是唯一的,无论我的列表中还有多少相同的位置名称 我的问题是,我需要一个公式/宏来简单地列出书面位置名称的所有可能位置代码 例如“Loby”- B1-018 B2-034 B2-051 最后,列表(查看/搜索名称和代码的表)和结果(在写下位

在我的项目中,我们只是简单地给同样有名字的房间指定位置代码。但可能会有一堆相同的命名位置,具有不同的规范

例如:位置代码:B2-001(B列)
位置名称:Loby(C列)

“B2”代表楼层编号和“-”后面的数字,简单地给该房间以形成位置代码,该位置代码对于该房间是唯一的,无论我的列表中还有多少相同的位置名称

我的问题是,我需要一个公式/宏来简单地列出书面位置名称的所有可能位置代码

例如“Loby”-
B1-018
B2-034
B2-051


最后,列表(查看/搜索名称和代码的表)和结果(在写下位置名称后列表出现的位置)将在同一工作手册中的两张不同的表中。

好吧,让您先用字母然后用数字给所有楼层编号,您可以使用它的concatation来迭代所有楼层索引可能性,如下所示:

Dim MyHotel As New Collection
For i = 1 To 100 'as much as floors numbers you have
    For j = 65 To 91 'as much as floor letters you have
        MyHotel.Add (Chr(j) & "-" & i) 'chr convert from number using ascii
    Next j
Next i

Worksheets.Add After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Select
i = 1
For Each Floor In MyHotel
    Cells(i, "A").Value = Floor
    i = i + 1
Next

有两种方法可以做到这一点:

  • 转到Data ribbon菜单并启用Filter,然后使用C列顶部的下拉菜单并取消选中除“Loby”之外的所有选项。然后,您可以将房间号复制粘贴到第二张图纸上
  • 如果需要VBA宏,可以使用类似的方法(并根据需要进行修改)

  • 也可以使用数组公式。在结果表的A1中输入“Loby”,然后使用CTRL+shift+Enter在A2中输入以下公式并将其下拉:-

    =IFERROR(INDEX(List!$B$2:$B$10, MATCH(0, IF($A$1=List!$C$2:$C$10, COUNTIF($A$1:$A1, List!$B$2:$B$10), ""), 0)),"")
    
    它假设您的列表表如下所示:-

    结果表应该是这样的:-


    No@pnuts,是关于Excel的。
    =IFERROR(INDEX(List!$B$2:$B$10, MATCH(0, IF($A$1=List!$C$2:$C$10, COUNTIF($A$1:$A1, List!$B$2:$B$10), ""), 0)),"")