1

まず、私は初心者です。私は文字通り、昨日初めて VBA を見ました。したがって、返信を馬鹿にしていただければ幸いです。笑。

週に数回、職場でスプレッドシートが渡されます。郵便番号を分割して、そこにあるパースペクティブ ストアに移動する必要があります。約 20 の郵便番号があり、並べ替えオプションを使用していますが、それでもしばらく時間がかかります。マルコを使用して、各郵便番号に店舗を提供したいと考えています。

これが私の問題です。郵便番号が「M1」に「Bullhead」と書かれるようにしたい多くのうちの1つと一致する場合、「J1」を見ようとしています

私はこれを行うことができました.最良の結果を得るには、数時間の試行錯誤が必要でした. いろいろ試してみました。(一番下は私が思いついたものです)

これが問題です。スプレッドシート全体でこれを行う必要があります。すなわち。m3 = 86409 J3 = キングマンの場合。m4 = 86409 j4 = キングマンの場合。M5000、J5000までずっと続きます。

どんな助けでも大歓迎です。やりたいことはシンプルだけど、自分で答えを見つけられなかったり、理解できなかったり。最初からやり直す必要があると思います。そして、別のアプローチを取る。よくわかりませんが。

Sub MoversBirthdays()  
    Dim zipcode As Long, Store As String  
    zipcode = Range("J2").Value   
    If zipcode = "86426" Or "86427" Or "86429" Or "86430" Or "86435" Or "86436" Or "86437" Or "86438" Or "86439" Or "86440" Or "86442" Or "86446" Or "89028" Or "89029" Or "89046" Or "92304" Or "92332" Or "92363" Then Store = "Bullhead" Else: Store = "Kingman"  
    If zipcode = "" Then Store = ""  
    Range("M2").Value = Store  
End Sub 
4

2 に答える 2

1
Sub MoversBirthdays()

    Dim varZip As Variant
    Dim arrStore() As String
    Dim StoreIndex As Long

    With Range("J2", Cells(Rows.Count, "J").End(xlUp))
        If .Row < 2 Then Exit Sub   'No data
        ReDim arrStore(1 To .Rows.Count)
        For Each varZip In .Value
            StoreIndex = StoreIndex + 1
            Select Case varZip
                Case 86426 To 86427, 86429 To 86430, 86435 To 86440, 86442, 86446, 89028 To 89029, 89046, 92304, 92332, 92363
                    arrStore(StoreIndex) = "Bullhead"
                Case ""
                    arrStore(StoreIndex) = ""
                Case Else
                    arrStore(StoreIndex) = "Kingman"
            End Select
        Next varZip
    End With

    If StoreIndex > 0 Then Range("M2").Resize(StoreIndex).Value = Application.Transpose(arrStore)

End Sub
于 2013-09-04T14:39:15.503 に答える