Board logo

標題: [發問] 菜鳥請問~ [打印本頁]

作者: amd8000x    時間: 2015-10-9 11:40     標題: 菜鳥請問~

小弟有個問題,看了1個晚上的網路資料,還是想不到要怎麼簡化~
想請問各位老師:
我的想法是在excel第cells(i,1)中比對特定字串(大約1組有5~10字串,大約有5組),
例如A組(有TA11,TA16,TA18~)
B組有(TA12,TA13,TA19,TA58~)
C組~
n組。
=>字串中,數字及英文字無規律及規則性。
找到那一組中的字串後在cells(i,3)代入該組的"特定字串",
我試寫巨集如下:
(我是要看有辨法簡化if 條件式中的比對字串)
Ps:我還未把所有要比對的字串放上來,放上去會蠻多的:L 。

Sub AAA()
Dim i As Integer
For i = 1 To 10000
If Cells(i, 1) = "TA11" Or Cells(i, 1) = "TA16" Or Cells(i, 1) = "TA18" Then
Cells(i, 3) = "YES"
ElseIf Cells(i, 1) = "TA12" Or Cells(i, 1) = "TA13" Or Cells(i, 1) = "TA19" Or Cells(i, 1) = "TA58" Then
Cells(i, 3) = "YES,sir"
ElseIf Cells(i, 1) = "CA11" Or Cells(i, 1) = "CA16" Or Cells(i, 1) = "CA18" Or Cells(i, 1) = "CA28" Then
Cells(i, 3) = "you right!!"
ElseIf Cells(i, 1) = "AA31" Or Cells(i, 1) = "AA56" Or Cells(i, 1) = "AA18" Or Cells(i, 1) = "AA68" Then
Cells(i, 3) = "HI"
Else
Cells(i, 3) = "NO"
End If
Next

End Sub
請教老師了~~感謝,感謝!!!
作者: 准提部林    時間: 2015-10-9 18:47

編個〔對照表〕,
使用 VLOOKUP 就簡單許多∼∼
作者: hcm19522    時間: 2015-10-10 09:55

http://blog.xuite.net/hcm19522/twblog/214357857
參考即可
作者: amd8000x    時間: 2015-10-11 00:35

版大~了解!
我用vlookup試寫了一下,我才發現跟用excel一點都不同。
不過終於試出來了~不知還有改進的空間嗎?

Sub vlookup()
Dim data As Range
Set data = ['對照表'!$A$1:B$100]
For i = 2 To 1000
Cells(i, 2) = Application.vlookup(Cells(i, 1), data, 2, 0)
Next
End Sub
作者: koo    時間: 2015-10-11 09:07

回復 4# amd8000x

剛學過..現學現賣
vlookup沒找到會回傳錯誤所以要加個料
Dim  j As Variant
k=Cells(i, 1)
j=Application.vlookup(k, data, 2, 0)
If Not IsError(j) Then
Cells(i,2)=j
End If
作者: stillfish00    時間: 2015-10-12 10:49

回復 1# amd8000x
  1. Sub AAA()
  2.     Dim i As Long, arData
  3.     Const GROUP_A = Array("TA11", "TA16", "TA18")
  4.     Const GROUP_B = Array("TA12", "TA13", "TA19", "TA58")
  5.    
  6.    
  7.     arData = Range("A1").Resize(Cells(Rows.Count, 1).End(xlUp).Row, 3).Value
  8.     For i = 1 To UBound(arData)
  9.         If Not IsError(Application.Match(arData(i, 1), GROUP_A)) Then
  10.             arData(i, 3) = "YES"
  11.         ElseIf Not IsError(Application.Match(arData(i, 1), GROUP_B)) Then
  12.             arData(i, 3) = "YES,sir"
  13.         End If
  14.     Next
  15.     Range("A1").Resize(UBound(arData), 3).Value = arData
  16. End Sub
複製代碼





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