2017-01-11 5 views
-1

列内の一連の数値を読み取り、指定されたより短い数値を返すようにコードを設定しようとしています。たとえば、数値が200の場合は1を返し、400の場合は2を返します。これが可能であれば、どのような考えですか?ここで列内の指定された数値を短縮するコード

+0

「指定された短い番号を返す」と言うときは、短い番号のリストがあり、特定の大きい番号に対応するものを探したいということですか? – Werrf

+0

また、短縮形に数値をマップする数式はありますか? e.x. 200/200 = 1,400/200 = 2、... x/200? –

答えて

0

は、二重ループを備えた小さな例です。

Sub Shorten() 
    Dim ary(1 To 4) As Long, bry(1 To 4) As Long 
    Dim I As Long, N As Long 

    ary(1) = 100 
    ary(2) = 234 
    ary(3) = 8765 
    ary(4) = 123 
    bry(1) = 1 
    bry(2) = 2 
    bry(3) = 3 
    bry(4) = 4 
    N = Cells(Rows.Count, "A").End(xlUp).Row 

    For I = 1 To N 
     For j = 1 To 4 
      If Cells(I, 1).Value = ary(j) Then Cells(I, 1).Value = bry(j) 
     Next j 
    Next I 
End Sub 

進()「長い」の値とブリのリスト()「短い」値のリストが含まれています。

+0

これはうまくいきました。わずかな問題は、データシートの列Aの数字のみを修正していることです。マクロを実行する列を指定するにはどうすればよいですか?また、列に長い数字が入力されたときに自動的にマクロを実行する方法はありますか? –

関連する問題