返回列表 上一主題 發帖

[發問] 請問VBA 的程式有沒有可以辨認某個儲存格內的字元有無包含某幾個字串?

[發問] 請問VBA 的程式有沒有可以辨認某個儲存格內的字元有無包含某幾個字串?

請問VBA 的程式有沒有可以辨認某個儲存格內的字元有無包含某幾個字串?
例如
另外無論是大寫或小寫都辨認到
in   A1  A3  A4 包含 in
A1   window   
A2  office
A3  tina
A4  WINNIE   

另外可否找尋字串的位置
例如
in   
A1   window                       3
A2  office   
A3  tina                                2
A4  WINNIE                       2

回復 2# kimbal


    感謝,但用一般excel我知道,我想知道vba有無這個功能?

TOP

回復 4# kimbal

感謝
    csearch = IIf(result = 0, "", result)
請問如果只是檢查有沒有是否改成csearch = IIf(result = 0, "沒有", “有”)

另外請問
DO
UNTIL
可否同時有兩個UNTIL的條件
例如:
DO

UNTIL i>=1 or l = 0
UNTIL i>=1 and l = 0

TOP

回復  kimbal

感謝
    csearch = IIf(result = 0, "", result)
請問如果只是檢查有沒有是否改成csea ...
198188 發表於 2013-3-1 01:26



    這個程式是否需要在C欄處寫 csearch("in"a1,)?
如果在VBA內注明 SEARCH "IN"可以嗎?另外英文大寫和小寫都可以辨認到嗎?或者如何指定辨認大寫或小寫?

TOP

  1. Sub Load_State_Detail()
  2. Dim FRng As Range
  3. Dim A As Range, Rng As Range
  4. Dim i As Integer
  5. Dim LastRec As Integer
  6. Dim l As Integer
  7. Dim k As Integer
  8. Dim j As Integer


  9. j = 2
  10. LastRec = Sheets("state").Range("A1").CurrentRegion.Rows.Count
  11. fs = "W:\Payment Daily Report\DOCS RECEIVED N RELEASED RECORD.xlsx"
  12. Set Wb = Workbooks.Open(fs)
  13. With ThisWorkbook.Worksheets("State")
  14. k = Wb.Sheets("收件記錄").Range("A1").CurrentRegion.Rows.Count
  15. For l = 2 To LastRec

  16. Do
  17. If Worksheets("State").Range("A" & l).Value = Wb.Sheets("收件記錄").Range("A" & j).Value Then
  18. Worksheets("State").Range("J" & l).Value = Wb.Sheets("收件記錄").Range("h" & j)
  19. If (InStr(1, Worksheets("State").Cells(l, 10), "OBL") >= 1) Then Worksheets("State").Range("J" & l).Value = Wb.Sheets("收件記錄").Range("h" & j) Else Worksheets("State").Range("J" & l).Value = ""
  20. End If
  21. j = j + 1
  22. Loop Until j = k Or (InStr(1, Worksheets("State").Cells(l, 10), "OBL") >= 1)
  23. Next
  24. End With
  25. End Sub
複製代碼
回復 7# kimbal

Test.rar (12.3 KB) DOCS RECEIVED N RELEASED RECORD.rar (226.13 KB)
個程式If Worksheets("State").Range("A" & l).Value = Wb.Sheets("收件記錄").Range("A" & j).Value Then 出現RUN TIME ERROR "9" SUBSCRIP OUT OF RANG?
我這個程式的作用是
在test excel�堛漳tate sheet A欄的訂單號如果在DOCS RECEIVED N RELEASED RECORD表內有這個訂單號,而且在H欄�堛漲r元含有"OBL", 那麼在test excel�堛漳tate sheet的J欄就顯示DOCS RECEIVED N RELEASED RECORD表內H欄的字,否則就空格

TOP

回復 8# mark15jill

請幫我看看上面的問題,謝謝

TOP

回復 11# mark15jill
  1. Sub State_Detail()
  2. Dim FRng As Range
  3. Dim a As Range, Rng As Range
  4. Dim i As Integer
  5. Dim LastRec As Integer
  6. Dim z As Integer
  7. Dim y As Integer
  8. Dim x As Integer
  9. Dim w As Integer

  10. z = Sheets("state").Range("a2").CurrentRegion.Rows.Count
  11. fs = "C:\Documents and Settings\USER\桌面\DOCS RECEIVED N RELEASED RECORD.xlsx"
  12. Set WB = Workbooks.Open(fs)

  13. With ThisWorkbook.Worksheets("State")

  14. x = 2
  15. For w = 2 To z
  16.     Do
  17.         If WB.Sheets("收件記錄").Cells(x, "D") = Sheets("state").Cells(w, "A") And (InStr(1, WB.Sheets("收件記錄").Cells(x, "H"), "OBL") >= 1) Then
  18.                  Sheets("state").Cells(w, "J") = WB.Sheets("收件記錄").Cells(x, "H")
  19.         End If
  20.         x = x + 1
  21.    Loop Until x = WB.Sheets("收件記錄").Row.Count.End(xlUp)
  22. Next

  23. End With
  24. WB.Close 0
  25. End Sub
複製代碼
出現執行階段錯誤9 陣列索引超出範圍

TOP

回復 13# Hsieh


    有個問題,因為我的DATA BASE�堛滬q單號會重複幾次, Set Rng = Sh.Columns("D").Find(a, lookat:=xlWhole) 這句只是會找一次
例如:
200000     PLANT INV
200000     OHC
200000     OBL
200000     CO
200000     遲証信

211111     OBL
211111     OHC
211111     CO

222222     OHC
222222     CO
222222     OBL
效果就無法出現
因為我是想只要訂單號相同,而且這些訂單號只要有一列有OBL三個字,就出現OBL否則空格

TOP

回復 15# GBKEE


我想要的效果是根據Test.xlsm的State Sheet 的A欄的訂單號,來尋找DOCS RECEIVED N RELEASED RECORD.xlsx 收單記錄SHEET內D欄是否有相同的訂單號和H欄的字元內包含"OBL"三個字(大小寫都沒有問題可以讀到),如果有,在Test.xlsm的State Sheet 的相應的訂單號J欄顯示DOCS RECEIVED N RELEASED RECORD.xlsx 收單記錄SHEET內H欄的資料。如果沒有就空格。
前面有附件
Test.xlsm
State sheet
A欄                J欄
20000          OBL-3
20001
20002
20003          OBL
20004          OBL

W:\Payment Daily Report\DOCS RECEIVED N RELEASED RECORD.xlsx"
收單記錄SHEET
D欄                          H欄
20000                     遲証信
20000                     OBL-3
20003                     OHC(BODY-1,OIE-1,ACCEPTED BSE-1),CO
20000                     OHC(BODY-1,HPAI-1)
20004                     OHC(BODY-1,OIE-1,ACCEPTED BSE-1,AD-1,CL-1)
20005                     OHC(BODY-1)
20003                     OBL
20003                     INV
20005                     INV
20005                     OBL
20004                     OBL

TOP

回復 18# Hsieh

可以了,感謝大大

fd = ThisWorkbook.Path & "\"  '資料來源目錄
fs = "DOCS RECEIVED N RELEASED RECORD.xlsx" '資料來源檔案(含副檔名)
另外請問上面兩句
如果我寫這句替代上面兩句fs = "W:\PIHK\DOCS RECEIVED N RELEASED RECORD.xlsx"
或者
fd = W:\PIHK\
fs = "DOCS RECEIVED N RELEASED RECORD.xlsx" '資料來源檔案(含副檔名)
這樣對嗎?

Join(Ar, "、"): Erase 這句是什麼意思?

另外請問如果我本來在state表的J欄已經有資料,會因應達到條件而取替資料,但如果要該儲存格是空格才取替

If s > 0 and trim(a.Offset(,9) )=“”Then a.Offset(, 9) = Join(Ar, "、"): Erase Ar: s = 0 Else a.Offset(, 9) = "" 這樣寫對嗎?

TOP

        靜思自在 : 待人退一步,愛人寬一寸,就會活得很快樂。
返回列表 上一主題