繁体   English   中英

Excel公式搜索一个单元格并替换另一单元格中的文本

[英]Excel Formula to Search One Cell and Replace Text in Another Cell

我一直在搜寻,发现很多帖子几乎是我所需要的,但没有什么是完全正确的。 希望有人在这里可以有所帮助。

我有两列数据,H列包含代理名称(Broker1,Broker2等)。 第一列包含他们代表的公司名称(ABC,BBC等)。 这些从属关系经常更改,因此我正在寻找一种设置公式或宏以进行快速更改的方法。 本质上,我要说的是“如果单元格I2包含公司ABC,则将H2更改为Broker2。”

所有的替换和替换功能似乎都集中在用Broker2替换所有Broker1上,但是我需要仅在涉及到某个公司的情况下才能进行此更改。 Broker2可能代表20家公司,因此我需要能够将查找范围和替换范围限制为某些数据元素。

希望这一切有意义,在此先感谢您的帮助!

添加细节:好的,这是一个真实的例子。 一家名为Elite的公司代表家乐氏。 H2 =“ Elite”,I2 ='Kellogg's。但是,Kellogg's可能会转换为另一家名为Core的公司。因此,我需要搜索I2:I200,无论我们在何处找到“ Kellogg's”,将H替换为“ Core”。因此,如果I78 =“ Kellogg's”,我需要将H78更改为“ Core”。麻烦的是,Elite可能会代表其他20家不搬家的公司,因此,仅在某些特定情况下,我无法完全用清单上的Core替换所有Elite

代表变更

电子表格

您可以创建公司名称的唯一列表并添加代表。 然后,您可以在代表列( H )中使用INDEX/MATCH公式,如下所示:

在此处输入图片说明

然后,您可以仅在一个位置( Elite M7 )更改Elite ,它将在H列的所有单元格(例如H4 )中自动更改。

VBA

如果您需要一次操作,则以下代码可能会有所帮助。 调整常数以满足您的需求。

Sub RepChange()

    Const Company As String = "Kellog's"
    Const Representer As String = "Elite"
    Const NewRepresenter As String = "Core"

    Const cSheet As Variant = "Sheet1"
    Const cColRep As Variant = "H"
    Const cColComp As Variant = "I"
    Const cFR As Long = 2

    Dim LR As Long
    Dim i As Long

    With ThisWorkbook.Worksheets(cSheet)
        LR = .Columns(cColComp).Cells(.Rows.Count).End(xlUp).Row
        For i = cFR To LR
            If StrComp(.Cells(i, cColComp), Company, vbTextCompare) = 0 And _
                    StrComp(.Cells(i, cColRep), Representer, vbTextCompare) _
                    = 0 Then .Cells(i, cColRep) = NewRepresenter
        Next
    End With

    MsgBox "Operation finished successfully.", vbInformation, "Success"

End Sub

vbTextCompare StrComp用于避免区分大小写,即AA = Aa = aa。

或者,您可以使用以下代码:

Sub RepChange2(Company As String, Representer As String, _
        NewRepresenter As String)

    Const cSheet As Variant = "Sheet1"
    Const cColRep As Variant = "H"
    Const cColComp As Variant = "I"
    Const cFR As Long = 2

    Dim LR As Long
    Dim i As Long

    With ThisWorkbook.Worksheets(cSheet)
        LR = .Columns(cColComp).Cells(.Rows.Count).End(xlUp).Row
        For i = cFR To LR
            If StrComp(.Cells(i, cColComp), Company, vbTextCompare) = 0 And _
                    StrComp(.Cells(i, cColRep), Representer, vbTextCompare) _
                    = 0 Then .Cells(i, cColRep) = NewRepresenter
        Next
    End With

End Sub

在这样的子程序中,您甚至可以编写几个语句:

Sub Kellogs()
    RepChange2 "Kellog's", "Elite", "Core"
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM