0

所以我们有一个两列的单元格范围,一列是邮政编码,另一列是郊区名称。一个邮政编码区域可以映射到多个郊区。

我们需要根据每条记录的邮政编码(每个工作表行有一条记录的数据)填写带有正确郊区的调查数据工作表。

理想情况下,我们会在将数据输入更大的工作表时执行此操作,但我们可以将郊区留空,然后根据邮政编码将其填写。

在邮政编码映射到多个郊区的情况下,需要用户输入(手头有行的数据表单)。将向用户显示郊区列表并选择出现在表格上的郊区)。

用户在输入周期中已经有数据表格在手,因此,这是在用户消除歧义之后在郊区添加的首选时间。

有人可以帮助代码片段来做到这一点。(这是一家非营利性的社区食品店。)

4

1 回答 1

0

修改我的代码以适合您的形式,函数返回一个数组。可能有更好的方法,但这是我目前所拥有的。

Function FindSuburbs(sPostcode As String) As Variant
    Dim oRngFirst As Range, oRngSearch As Range, aSuburbs As Variant, i As Long

    With ActiveSheet.Columns("A") ' Change ActiveSheet and the Column as needed
        Set oRngSearch = .Find(sPostcode)
        If oRngSearch Is Nothing Then Exit Function
        Set oRngFirst = oRngSearch
        i = 0
        aSuburbs = Array()
        ' Look for results
        Do
            If Not oRngSearch Is Nothing Then
                ReDim Preserve aSuburbs(i)
                aSuburbs(i) = oRngSearch.Offset(0, 1).Value ' Stores the Suburb name which is on the next column
                i = i + 1
            End If
            Set oRngSearch = .Find(sPostcode, After:=oRngSearch)
            ' Stop Searching if it is the First Searched Result
        Loop While Not oRngSearch Is Nothing And oRngSearch.Address <> oRngFirst.Address
    End With
    FindSuburbs = aSuburbs
End Function

Sub SO_18908132() ' For Testing
    Dim sPostCode as String
    sPostCode = "Post Code to Search"
    Debug.Print sPostCode & ": " & Join(FindSuburbs(sPostCode), ", ")
End Sub
于 2013-09-20T06:58:26.670 回答