iT邦幫忙

0

[已解決]如何用vba 查詢多條件並更改字串

  • 分享至 

  • xImage

求解..

請問如何用vba寫出多條件查找並且更改欄位字串

希望出來的成果是:
工作頁member_users J欄Group找出"SP-STD-USD"和"GL-STD-USD"後統一名稱為STD-USD後
自動再貼到另一份excel檔
https://ithelp.ithome.com.tw/upload/images/20220122/201459766VHD4IJ13F.png

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
海綿寶寶
iT邦大神 1 級 ‧ 2022-01-22 08:28:15

With Worksheets(1).Range("J2:J19")

指的是第一張工作表
改成

With ActiveSheet.Range("J2:J19")

就可以在「任何一張」/目前的工作表執行

看更多先前的回應...收起先前的回應...
dapa0704 iT邦新手 5 級 ‧ 2022-01-25 23:14:35 檢舉

海綿大大 還是失敗..還請麻煩再協助指導,感恩感恩!

記得原題目是「成功,但換到別的檔案就失敗」
現在改成「失敗」二字
請問是那一個部份失敗?

找出"SP-STD-USD"和"GL-STD-USD" - 找不到?

統一名稱為STD-USD後 - 不能取代?

自動再貼到另一份excel檔 - 不能貼?

其他 ?

dapa0704 iT邦新手 5 級 ‧ 2022-01-26 22:54:10 檢舉

海綿寶寶海大大照您說的改了之後,點按鈕無任何反應
https://ithelp.ithome.com.tw/upload/images/20220126/20145976uliqecmfLo.png

可能是
1.執行 FindString 時沒有開啟任何工作表
2.J2:J999 沒有符合的資料

先用最單純的方式(開一張工作表+直接/只呼叫 FindString)測試 FindString
成功後再用原完整程式使用

dapa0704 iT邦新手 5 級 ‧ 2022-01-28 02:28:25 檢舉

單純開一張工作表是可以將GL-STD-USD改成STD-USD,
想請問海大大,如果我要J列的GL-STD-USD和SP-STD-USD都改成STD-USD,語法應該怎麼改才行

簡單寫就再重覆一次,大概像這樣

With ActiveSheet.Range("J2:J999")
    '原程式
    Set member_users = .Find("GL-STD-USD", LookIn:=xlValues)
    If Not ...
        ...
    End If
    '重覆寫
    Set member_users = .Find("SP-STD-USD", LookIn:=xlValues)
    If Not ...
        ...
    End If    
End With
dapa0704 iT邦新手 5 級 ‧ 2022-01-29 00:10:00 檢舉

海綿寶寶感謝海大大的協助,已解決!!!/images/emoticon/emoticon02.gif

如果問題已解決
請選個最佳解答以結案

1
blanksoul12
iT邦研究生 5 級 ‧ 2022-01-22 09:52:04
Sub test()

arr = WorksheetFunction.Transpose(Columns("j"))
For i = 1 To UBound(arr)
    If arr(i) <> "" Then
        arr(i) = Replace(arr(i), "GL-STD-USD", "STD-USD")
    Else
        Exit For
    End If
Next
[j1].Resize(i - 1, 1) = arr

End Sub
看更多先前的回應...收起先前的回應...
dapa0704 iT邦新手 5 級 ‧ 2022-01-25 23:15:06 檢舉

還是不行..還請麻煩再協助指導,感恩感恩!

blanksoul12 iT邦研究生 5 級 ‧ 2022-01-26 08:19:43 檢舉

有什麼不行? 運行後出現什麼效果?

dapa0704 iT邦新手 5 級 ‧ 2022-01-26 22:39:15 檢舉

https://ithelp.ithome.com.tw/upload/images/20220126/20145976XedyL51GYn.png
blanksoul12大大,會出現這個錯誤

blanksoul12 iT邦研究生 5 級 ‧ 2022-01-27 09:25:04 檢舉

那麼奇怪啊,我自己運行時沒這個問題,你試試按偵錯後,看看區域變數視窗.
1.ARR 入面有沒有資料
2.i 值是多少
用 f8 續條程序行看看有什麼支怪吧,因為這不是複雜的做法

dapa0704 iT邦新手 5 級 ‧ 2022-01-28 02:43:13 檢舉

1.ARR有資料的
2.i值是2
blanksoul12大大 我單純開一張工作表的話,是直接前幾欄字串直接變Group,
抱歉初學VBA還不太會看續條程序行

1
idoncys
iT邦研究生 2 級 ‧ 2022-01-22 10:17:14

我們幫客戶是這樣寫的,可以展開資料與比對與回寫
ls_preorderfile=ActiveWorkbook.Name 可記錄操作中檔名
Windows(ls_preorderfile).Activate 切到此檔

https://ithelp.ithome.com.tw/upload/images/20220122/20023389bRrVsLLXkS.jpg

讀取條件可以指定欄位成批一起或逐次讀取,也可搭配綜合條件組合,條件可由客戶自行維護

檔案是公司內部使用,考慮安全行的話,必須過濾有疑慮的條件,例如 delete,drop 等,但很容易抓出來並回報客戶主管,所以沒發生有惡意的情形

https://ithelp.ithome.com.tw/upload/images/20220122/20023389WAuN8mFpTD.jpg

dapa0704 iT邦新手 5 級 ‧ 2022-01-25 23:18:45 檢舉

大大您說的方式好像比較複雜一點,我只需要將這份文件直接篩選改好字串再貼到另外一份excel,再麻煩您替我解惑,感恩

我要發表回答

立即登入回答