![](/img/trans.png)
[英]How can I calculate the text in one cell as a formula in another cell in microsoft 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
)中自动更改。
如果您需要一次操作,则以下代码可能会有所帮助。 调整常数以满足您的需求。
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.