在我的项目中,我们只需将位置代码提供给房间,该房间也有一个名称。但是可能会有一堆具有不同规格的相同命名位置。
例如:位置代码:B2- 001(B栏)
位置名称:Loby(C柱)
" B2"代表地板编号和" - "之后的编号。只需给那个房间形成位置代码,无论在我的列表中存在多少相同的位置名称,该代码对于该房间都是唯一的。
我的问题是我需要一个公式/宏来列出所有可能的写入位置名称的位置代码。
离。 "罗比" -
B1-018
B2-034
B2-051
最后,列表(要查看/搜索名称和代码的表格)和结果(在写下位置名称后列表出现的位置)将在同一工作簿中的两个不同的表格中。
答案 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)
实际上有两种方法可以做到这一点:
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)),"")
它假设您的列表工作表如下所示: -
,结果表应如下所示: -