Board logo

標題: 如何自動比對數字帶出標準值 [打印本頁]

作者: luke    時間: 2012-4-3 00:04     標題: 如何自動比對數字帶出標準值

各位大大

小弟錄製乙個巨集, 分別篩選出單一數字或多個數字儲存格的值

我想用VBA去比對一個事先做好的標準值, 再帶出結果

煩請先進指導
[attach]10279[/attach]
作者: hugh0620    時間: 2012-4-3 09:17

本帖最後由 hugh0620 於 2012-4-3 09:19 編輯

回復 1# luke


   用一個最簡單的方式來寫[if]
  1. Sub ex()
  2. For j = 2 To 4 Step 2    '列數,資料要跑第2&4列
  3.      For i = 1 To 10          '欄位從A到J
  4.            If 30.5 < Cells(j, i) And Cells(j, i) <= 40 Then
  5.                Cells(j + 1, i) = 40    '資料放在第3&5列
  6.            ElseIf 25.5 < Cells(j, i) And Cells(j, i) <= 30.5 Then
  7.               Cells(j + 1, i) = 30
  8.            ElseIf 20.5 < Cells(j, i) And Cells(j, i) <= 25.5 Then
  9.               Cells(j + 1, i) = 25
  10.            ElseIf 16.5 < Cells(j, i) And Cells(j, i) <= 20.5 Then
  11.               Cells(j + 1, i) = 20
  12.            ElseIf 12.1 < Cells(j, i) And Cells(j, i) <= 16.5 Then
  13.               Cells(j + 1, i) = 16
  14.            ElseIf 10.1 < Cells(j, i) And Cells(j, i) <= 12.1 Then
  15.               Cells(j + 1, i) = 12
  16.            ElseIf 8.1 < Cells(j, i) And Cells(j, i) <= 10.1 Then
  17.               Cells(j + 1, i) = 10
  18.            ElseIf 6.1 < Cells(j, i) And Cells(j, i) <= 8.1 Then
  19.               Cells(j + 1, i) = 8
  20.            ElseIf 4.1 < Cells(j, i) And Cells(j, i) <= 6.1 Then
  21.               Cells(j + 1, i) = 6
  22.            ElseIf 2# < Cells(j, i) And Cells(j, i) <= 4.1 Then
  23.               Cells(j + 1, i) = 4
  24.            ElseIf 0 < Cells(j, i) And Cells(j, i) <= 2.1 Then
  25.               Cells(j + 1, i) = 2
  26.            End If
  27.      Next
  28. Next
  29. End Sub
複製代碼

作者: register313    時間: 2012-4-3 11:23

回復 1# luke
加入R6~R16,作為比對依據
[attach]10280[/attach]
  1. Sub XX()
  2. For Each a In [A2:J2,A4:J4]
  3.   For Each b In [R6:R16]
  4.     If a <= b Then
  5.        a.Offset(1, 0) = Int(b)
  6.        Exit For
  7.     End If
  8.   Next
  9. Next
  10. End Sub
複製代碼

作者: Hsieh    時間: 2012-4-3 14:45

回復 1# luke
  1. Sub ex()
  2. Dim Ay()
  3. a = Array(0, 2.1, 4.1, 6.1, 8.1, 10.1, 12.1, 16.5, 20.5, 25.5, 30.5)
  4. b = Array(2, 4, 6, 8, 10, 12, 16, 20, 25, 30, 40)
  5. For Each c In [A1:J1]
  6.    If InStr(c, ",") > 0 Then
  7.       ar = Split(c, ",")
  8.       For Each x In ar
  9.         ReDim Preserve Ay(s)
  10.         Ay(s) = x / [P1]
  11.         s = s + 1
  12.       Next
  13.       d = Application.Max(Ay)
  14.       e = Application.Sum(Ay)
  15.       Erase Ay: s = 0
  16.       Else
  17.       d = c / [P1]: e = c / [P1]
  18.    End If
  19.    f = Application.Lookup(d, a, b)
  20.    g = Application.Lookup(e, a, b)
  21.    c.Offset(1).Resize(4, 1) = Application.Transpose(Array(d, f, e, g))
  22. Next
  23. End Sub
複製代碼

作者: luke    時間: 2012-4-3 20:27

回復 3# register313


非常實用(測試OK)


    謝謝"register313"前後兩次的解答




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)