-1

サウスカロライナ州アビゲイルベリー

サウスカロライナ州アビゲイルベリー

サウスカロライナ州アビゲイルベリー

*アイデアは、間違って配置された州をホームタウンと自動的に交換することです.ieサウスキャロラインとアビゲイルベリー

私は5001行を持っており、特定の2つの列(ホームタウン、ホーム州)にアクセスしようとしています。ホーム タウン列にホーム ステートの値が間違って配置されている場合、ホーム タウンとホーム ステートの値を入れ替える vba スクリプトを作成しようとしています。ワークシート内の 50 の状態すべての範囲を参照し、if ステートメントでチェックする必要がある配列を使用して、これを実行しようとしました。

ただし、不一致が発生し続け、アプリケーション定義またはオブジェクト定義エラーを定義します。初心者のエラーは確かです。

これは私の試みです:

Dim states() As String 
states = Range("N1:N50").Value 
Dim x As Long 
Dim y As Long 

'go through rows in the d column
For x = 1 To 5001
    'Range("D" & x).Select

        'for loop for array and if statement
            For y = 1 To 50

            states() = Cells(y, n)

                    If y <= 1 Then

            'second for loop

                    Var = Cells(2, 4)
                    Cells(2, 4) = Cells(2, 5)
                    Cells(2, 5) = Var

                   End If

            Next y 'go to next 1..50            
Next x
4

1 に答える 1

0

ここに私があなたを助けるかもしれないと思うものがあります。私のシートが次のように設定されているとします:

      A     B     C     D            E           ...     N
1                       Home State   Home Town           States
2                       KS           Townsville          AL
3                       ME           Bar Harbor          AK
4                       CO           Boulder             AR
5     etc...

次に、以下を使用して、 のエントリHome Townが実際に州名であるかどうかを確認し、そうである場合は、その値をHome State.

Dim states As Variant

Sub CheckHomeTown()
    Dim rw As Long, temp As Variant
    states = Range("N2:N52")               //Assign states to module level variable 'states'

    For rw = 2 To 5001                     //Loop through all 'Home Town` entries...
        If IsState(Cells(rw, 5)) Then      //If 'Home Town' is actually a state then swap...
            temp = Cells(rw, 4)
            Cells(rw, 4) = Cells(rw, 5)
            Cells(rw, 5) = temp
        End If
    Next rw
End Sub

Function IsState(val As Range) As Boolean
    Dim match As Boolean        
    match = False

    For Index = 1 To UBound(states)
        If val = states(Index, 1) Then
            match = True
        End If
    Next Index

    IsState = match
End Function
于 2013-04-28T17:07:01.537 に答える