2016-07-21 34 views
0

因此,我試圖組織我的帳戶。如何在一列中找到一個短語,並將另一個短語輸出到另一個單元中

我有幾個專欄:C是其可能包含例如字「汽油」或「ATM」或許多其他關鍵短語中的「貝寶」 每筆交易我的銀行信息。

我想要創建一個通過C列搜索'PayPal'的宏,如果它發現它,將'PayPal'放在同一行的D列中。

另一個例子 - 如果它發現'B/CARD PLAT VISA'C58,那麼我想'信用卡支付'寫在D58中。

我想解決這個問題,基於我發現/調整刪除列的舊宏!

喜歡的東西:

Dim c As Range 
Dim SrchRng 

Set SrchRng = ActiveSheet.Range("C1", ActiveSheet.Range("C65536").End(xlUp)) 
Do 
    Set c = SrchRng.Find("petrol", LookIn:=xlValues) 
    If Not c Is Nothing Then 
//SOMETHING GOES HERE? 
Loop While Not c Is Nothing 

你可能會說,我在這方面並不擅長。

我的最終目標是能夠從這些標題中輸出我每個月/每年在每個類別中花費和掙得多少。它應該讓自僱人士的生活稍微容易些。

+0

首先你說列「C」_「可以包含單詞」汽油「或」atm「或」paypal'_。然後你說_「如果它發現'B/CARD PLAT VISA'C58」_,不符合任何前面的關鍵字,你應該首先正確地設置你的代碼規範,然後嘗試編碼,並最終在出現問題時尋求幫助 – user3598756

+0

對不起,更清楚 - 它包含大量信息 - 它'我的銀行賬戶使用記錄 - 所以一個條目可以簡單地讀作'O2',這是我的電話賬單,並且需要在列D中添加爲'電話賬單'。另一個可以閱讀「7341 23FEB15,SAINSBURYS S/MKTS 「這是我家附近的一家超市,並在D欄中標爲'食品'。 大多數帳戶活動都是正常的,所以我需要一條規則來尋找'sainsburys','asda'和'tesco' (我家附近的所有超市)並返回'食物' D.找到O2並返回「電話帳單」等的規則等等。 – SGPascoe

+0

我已將此清除爲粗體 – SGPascoe

回答

0

這將進一步幫助您:

Sub OrganiseCategories() 

    Dim FoundRange As Range, FirstAddress As String 

    With Range("B:B") 
     Set FoundRange = .Find("Paypal", , xlValues, xlWhole, , , False) 
     FirstAddress = FoundRange.Address 
     Do 
     FoundRange.Offset(0, 1).Value2 = "PayPal" 
     Set FoundRange = .FindNext(FoundRange) 
     Loop While Not FoundRange Is Nothing And FoundRange.Address <> FirstAddress 

    End With 

End Sub 

朗日布魯因對此有一個很好的頁面: http://www.rondebruin.nl/win/s9/win006.htm

+0

我在FirstAddress = FoundRange.Address中收到「Object variable或With block variable not set」 – SGPascoe

+0

這是由於您提供了一個搜索字符串來查找您沒有的內容您的搜索範圍。即如果列「B」中沒有任何條目被命名爲「Paypal」,則「FoundRange」將保持「Nothing」(即,'未設置'),因此返回這個錯誤消息。您只需要找到一種方法來處理這些情況:1.錯誤處理,2.確保您的搜索字符串始終是可以找到的東西。 – CoRrRan

+0

我現在看到問題了!將B:B更正爲C1:C500並給出完全匹配之後,它就起作用了!但是,我需要搜索不準確!所以當我想要將物品標記爲汽油時 - 我希望電池「12AUG15,SAINSBURYS PETROL」和電池「04SEP15,ASDA PETROL/UPT」都計入! 隨着一些谷歌搜索 - 我想我需要使用instr而不是找到?還是需要一起使用? – SGPascoe

1

OK!所以在CoRrRan的幫助下,一些宏和一些谷歌的自我錄製,我設法創造了我所需要的。

Sub OrganiseCategories() 

Dim FoundRange As Range, FirstAddress As String, Searchterm As Variant,  Searchresult As Variant 

Searchterm = InputBox("What term would you like to search for?") 
Searchresult = InputBox("What category would you like to set for this term?") 
    With Range("C:C") 
    Set FoundRange = .Find(What:=Searchterm, LookIn:=xlValues, _ 
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
    MatchCase:=False, SearchFormat:=False) 
    FirstAddress = FoundRange.Address 
    Do 
    FoundRange.Offset(0, 1).Value2 = Searchresult 

    Set FoundRange = .FindNext(FoundRange) 
    Loop While Not FoundRange Is Nothing And FoundRange.Address <> FirstAddress 

End With 

End Sub 

這給了我一個輸入框輸入一個非精確搜索詞,輸入框,選擇一個類別,以將搜索結果:不是每次更改代碼更容易我想打一個新的搜索。我可以創建多個'默認'搜索條款,如汽油,簽證,貝寶等沒有輸入框,作爲一個單獨的宏基地。

相關問題