请问如何删除EXCEL中某行某列的单元格中在另一列中出现过的字符串?

如图所示,比如行106,请在D、E、F、G列中删除C列出现过的字符串。在我所需要解决的问题中就是批量删除每行中后几列出现过的C列中的名字。

这个问题可以使用SUBSTITUTE函数来解决,但无法在原单元格直接修改,需要产生新的单元格(删除指定字符后的新单元格),不过问题不大新建表或者在表格下方新建都行.

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-16

请讲以下代码复制:

Sub onekeyclear()

Dim rg As Range

For Each rg In Intersect(Columns("D:G"), Columns("D:G").Parent.UsedRange).Cells

    On Error Resume Next

    rg = VBA.Replace(rg.Value, Cells(rg.Row, 3).Value, "", 1, -1, vbBinaryCompare)

Next

End Sub

然后根据动图操作即可:

第2个回答  2019-09-17
这样使用:
1、
先做好备份,将光标定位到包含你数据的表格,点:开发工具-宏安全性-宏设置-启用所有宏

2、
点: 开发工具-Visual Basic,双击左边的ThisWorkbook,将下面的代码复制到右边:
Sub rep(Optional ByVal col As Integer = 3)
Dim r, c, startrow, endrow, endcolumn As Integer
Dim rg As Range

startrow = Cells(1, col).End(xlDown).Rows.Row
endrow = Cells(Rows.Count, col).End(xlUp).Rows.Row
For r = startrow To endrow
endcolumn = Cells(r, Columns.Count).End(xlToLeft).Column
For c = col + 1 To endcolumn
Set rg = Cells(r, c)
If Not IsEmpty(rg) Then
rg = Replace(Cells(r, c), Cells(r, col), "")
End If
Next c
Next r
End Sub

Sub test()
rep
End Sub
3、将插入符定位到test()过程的Sub与End Sub之间(rep中),点击工具栏中的绿色的右三角箭头。
第3个回答  2019-09-16
在J列输入公式试试看。
=SUBSTITUTE(D106,IF(ISERROR(FIND(C106&"\",D106)),C106,C106&"\"),"")
大概就是用替换函数,C106的值如果出现在D106,就把它替换为空。
相似回答