如何在一列中找到一个短语,并将另一个短语输出到另一个单元中

如何在一列中找到一个短语,并将另一个短语输出到另一个单元中

问题描述:

因此,我试图组织我的帐户。如何在一列中找到一个短语,并将另一个短语输出到另一个单元中

我有几个专栏: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

这将进一步帮助您:

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

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 

这给了我一个输入框输入一个非精确搜索词,输入框,选择一个类别,以将搜索结果:不是每次更改代码更容易我想打一个新的搜索。我可以创建多个'默认'搜索条款,如汽油,签证,贝宝等没有输入框,作为一个单独的宏基地。