Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excel查找字符串,然后使用IF语句_Excel_Vba - Fatal编程技术网

excel查找字符串,然后使用IF语句

excel查找字符串,然后使用IF语句,excel,vba,Excel,Vba,我基本上继承了一个数据库,其中的数据非常混乱。我需要开始清理它,这是我在Excel中所做的 该数据有一个代码,该代码已在其他单元格中使用,但不应在其他单元格中使用。基本上我想写一些VB来看看 CellB并将[和.之间的文本第一部分与CellA中的文本进行比较 如果它们相同,我希望它删除CellB中的文本,如果不是,我希望它保持CellB不变 下面的示例是我需要在具有不同文本段的加载列中执行此操作的最简单示例。唯一的常量是我需要检查的代码将在所有列中的第一个[和。之间 我曾经尝试过使用MID语句编

我基本上继承了一个数据库,其中的数据非常混乱。我需要开始清理它,这是我在Excel中所做的

该数据有一个代码,该代码已在其他单元格中使用,但不应在其他单元格中使用。基本上我想写一些VB来看看
CellB
并将
[和.
之间的文本第一部分与
CellA
中的文本进行比较

如果它们相同,我希望它删除
CellB
中的文本,如果不是,我希望它保持
CellB
不变

下面的示例是我需要在具有不同文本段的加载列中执行此操作的最简单示例。唯一的常量是我需要检查的代码将在所有列中的第一个
[和。
之间

我曾经尝试过使用
MID
语句编写一些VB,但没有掌握它的窍门

有什么想法吗

Before
A            B
M548    [M548.PLANNED]
M513    [M503.PLANNED]
M503    [M503.PLANNED]

After
A            B
M548    [.PLANNED]
M513    [M503.PLANNED]
M503    [.PLANNED]

如果B列的每一条数据都是这种格式,这可能会起作用:

=IF(MID(B4,2,4)=A4,"[.PLANNED]",B4)
下面是一张补充说明的图片:


然后,您可以将值“粘贴”到第二列中以替换当前数据。

如果B列的每一条数据都是该格式的,这可能会起作用:

=IF(MID(B4,2,4)=A4,"[.PLANNED]",B4)
下面是一张补充说明的图片:


然后,您将“粘贴值”到第二列中以替换当前数据。

如果您的数据的格式与[中]相同,后跟4个字符,则可以在C列中使用以下公式

=IF(MID(B2,2,4)=A2,CONCATENATE("[",MID(B2,SEARCH(".",B2),100)),B2)

如果数据的格式与[中的格式相同,后跟4个字符,则可以在C列中使用以下公式

=IF(MID(B2,2,4)=A2,CONCATENATE("[",MID(B2,SEARCH(".",B2),100)),B2)

如果A中的值在B中只出现一次,则简单的替换将起作用:

Sub cleanData()
    For i = 1 To 3
        Cells(i, 2).Value = Replace(Cells(i, 2).Value, Cells(i, 1).Value, "")
    Next
End Sub

如果A中的值在B中只出现一次,则简单的替换将起作用:

Sub cleanData()
    For i = 1 To 3
        Cells(i, 2).Value = Replace(Cells(i, 2).Value, Cells(i, 1).Value, "")
    Next
End Sub

一个简单的解决方案是使用Find&Replace删除“[”,文本到以“.”分隔的列,然后比较这两个字符串是否匹配。然后可以将它们重新连接在一起。1)欢迎使用SO 2)这真的与
vb.net
有关吗?如果不是,请删除标记3)公式以提取
[
=MID(B2,2,FIND(“.”,B2)-2)
4)最后,如果您需要有关实际VBA的帮助,您需要显示您迄今为止的努力以及失败的地方。请参阅。抱歉删除了VB.net这是一个建议的标记,我只是看到了VB并单击了抱歉。目前,我在编写稍微不同的代码的第一个关卡中失败了“=MID(B2),[”,Find(“,B2)-2)'不起作用。一个简单的解决方案是使用“查找和替换”将“[”,文本删除到由“.”分隔的列中,然后比较这两个字符串,看看它们是否匹配。然后您可以将它们连接在一起。1)欢迎使用SO 2)这真的与
vb.net
有关吗?如果没有,请删除标记3)公式以提取
[
之间的数据是
=MID(B2,2,FIND(“.”,B2)-2)
4)最后,如果您需要有关实际VBA的帮助,您需要显示您迄今为止的努力以及失败的地方。请参阅。抱歉删除了VB.net这是一个建议的标记,我只是看到了VB并单击了抱歉。目前,我在编写稍微不同的代码的第一个关卡中失败了“=MID(B2),[”,Find(“,B2)-2)'这不起作用。非常感谢,我想我可以让这篇文章适用于我所有的其他专栏。感谢你的努力!;)你可能想在
A4
中允许不同长度的数据-将公式更改为
=IF(MID(B4,2,LEN(A4))=A4,[.PLANNED]”,B4)
允许长度可变的
A4
。我正想问这个问题。非常感谢!非常感谢我认为我可以让这一列适用于我的所有其他列。感谢你的努力!;)你可能希望在
A4
中允许不同长度的数据-将公式更改为
=IF(MID(B4,2,LEN(A4))=A4,”[.PLANNED]”,B4)
允许长度可变的
A4
。我正要问这个问题。非常感谢!