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

时间:2015-04-16 11:10:06

标签: excel excel-vba excel-formula vba

在我的项目中,我们只需将位置代码提供给房间,该房间也有一个名称。但是可能会有一堆具有不同规格的相同命名位置。

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

" B2"代表地板编号和" - "之后的编号。只需给那个房间形成位置代码,无论在我的列表中存在多少相同的位置名称,该代码对于该房间都是​​唯一的。

我的问题是我需要一个公式/宏来列出所有可能的写入位置名称的位置代码。

离。 "罗比" -
 B1-018
             B2-034
             B2-051

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

3 个答案:

答案 0 :(得分:0)

好吧,你可以用一个字母和一个数字来表示你对所有楼层的编号,你可以使用它的连接来迭代所有的楼层索引可能性,如下所示:

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

答案 1 :(得分:0)

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

  1. 转到数据功能区菜单并启用过滤器,然后使用C列顶部的下拉菜单并取消选中除" Loby"以外的所有内容。然后,您可以将房间号码复制粘贴到第二张表格上。
  2. 如果你想要一个VBA宏,你可以使用这样的东西(并修改你需要的一切)
  3. Option Explicit
    
    Sub LocationFilterCopy()
        Dim roomList As Range
        Dim destResults As Range
        Dim lastRow As Long
        Dim i, j As Long
        Dim locationFilter As String
    
        lastRow = Sheets("Sheet1").Cells(Sheets("Sheet1").Rows.Count, "B").End(xlUp).Row
        Set roomList = Sheets("Sheet1").Range("B2").Resize(lastRow, 1)
        Set destResults = Sheets("Sheet2").Range("A1")
    
        j = 1
        locationFilter = "Loby"
        For i = 1 To lastRow
            If roomList.Cells(i, 2).Value = locationFilter Then
                destResults.Cells(j, 1).Value = roomList.Cells(i, 1).Value
                j = j + 1
            End If
        Next i
    End Sub
    

答案 2 :(得分:0)

您还可以使用数组公式。在结果表的A1中输入“Loby”,然后使用 CTRL + shift + 输入在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)),"")

它假设您的列表工作表如下所示: -

enter image description here

,结果表应如下所示: -

enter image description here