excel 使用 VBA 查找和替换
以sheet1中的“日本社名”为关键字,在sheet2中查找相应的“日本社名”,如果找到,则在sheet2中进行修改,把同行的“englishcompanyname"中的...
以sheet 1中的“日本社名”为关键字,在sheet 2中查找相应的“日本社名”,如果找到,则在sheet2中进行修改,把同行的“english company name"中的文字删除,并且替换成 sheet 1中对应的“现地社名”;如果没有找到,则把sheet 2中"english company name" 标注成红色。
由于数据较多,希望希望可以通过VBA实现。请高手帮帮忙。。灰常感谢。 展开
由于数据较多,希望希望可以通过VBA实现。请高手帮帮忙。。灰常感谢。 展开
4个回答
展开全部
假设两个工作表都使用A:B两列
不需要使用VBA,用函数操作步骤如下:
1.在sheet2的A列前插入一个空白列,得到空白列为A列,其它两列就变成了B:C列
2.在新列的A2单元格内输入公式:=INDEX(Sheet1!A:A,MATCH(C2,Sheet1!B:B,0),)
3.下拉填充这个公式(或双击填充柄直接填充)
4.A列就得到与sheet1对应的A列数据。复制sheet2的A列,直接在A列右键选择性粘贴为“数值”
5.如果A列没有找到合适的数据,会显示#N/A
6.筛选A列的#N/A项,如果数据少,可以通过复制粘把B列对应的内容弄过来,然后填充颜色为红色
7.如果得到的#N/A项目比较多,可以在第2步骤时使用公式:
=IF(ISERROR(INDEX(Sheet1!A:A,MATCH(C2,Sheet1!B:B,0),)),B2,INDEX(Sheet1!A:A,MATCH(C2,Sheet1!B:B,0),))
8.这样就可以通过设置条件格式来把A列等于B列数据的行设置为红色底纹
如果不明白,可以HI我一下
不需要使用VBA,用函数操作步骤如下:
1.在sheet2的A列前插入一个空白列,得到空白列为A列,其它两列就变成了B:C列
2.在新列的A2单元格内输入公式:=INDEX(Sheet1!A:A,MATCH(C2,Sheet1!B:B,0),)
3.下拉填充这个公式(或双击填充柄直接填充)
4.A列就得到与sheet1对应的A列数据。复制sheet2的A列,直接在A列右键选择性粘贴为“数值”
5.如果A列没有找到合适的数据,会显示#N/A
6.筛选A列的#N/A项,如果数据少,可以通过复制粘把B列对应的内容弄过来,然后填充颜色为红色
7.如果得到的#N/A项目比较多,可以在第2步骤时使用公式:
=IF(ISERROR(INDEX(Sheet1!A:A,MATCH(C2,Sheet1!B:B,0),)),B2,INDEX(Sheet1!A:A,MATCH(C2,Sheet1!B:B,0),))
8.这样就可以通过设置条件格式来把A列等于B列数据的行设置为红色底纹
如果不明白,可以HI我一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先把sheet 1中的“现地社名”复制到“日本社名”右边一列
在sheet2“日本社名”右边一列第一个单元格输入公式
=VLOOKUP(b2,Sheet1!$b$2:$c$500,2,FALSE)
完了按新得的这一列排序,把没有找到的涂红,把找到的复制,然后选择性粘贴覆盖“english company name"的内容
重新排序即可
在sheet2“日本社名”右边一列第一个单元格输入公式
=VLOOKUP(b2,Sheet1!$b$2:$c$500,2,FALSE)
完了按新得的这一列排序,把没有找到的涂红,把找到的复制,然后选择性粘贴覆盖“english company name"的内容
重新排序即可
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Dim i%, j%
m = Sheets("sheet1").Range("b65535").End(xlUp).Rows
n = Sheets("sheet2").Range("b65535").End(xlUp).Rows
For i = 2 To m
For j = 2 To n
If Sheets("sheet2").Range("b" & j) = Sheets("sheet1").Range("b" & j) Then
Sheets("sheet2").Range("b" & j).Offset(-1, 0) = Sheets("sheet1").Range("b" & j).Offset(-1, 0)
Else: Sheets("sheet2").Range("b" & j).Offset(-1, 0).Interior.Color = 255
End If
Next j
Next i
楼主,我没具体试,如果不行,你在找我了。如果采用,分可要给我的。
m = Sheets("sheet1").Range("b65535").End(xlUp).Rows
n = Sheets("sheet2").Range("b65535").End(xlUp).Rows
For i = 2 To m
For j = 2 To n
If Sheets("sheet2").Range("b" & j) = Sheets("sheet1").Range("b" & j) Then
Sheets("sheet2").Range("b" & j).Offset(-1, 0) = Sheets("sheet1").Range("b" & j).Offset(-1, 0)
Else: Sheets("sheet2").Range("b" & j).Offset(-1, 0).Interior.Color = 255
End If
Next j
Next i
楼主,我没具体试,如果不行,你在找我了。如果采用,分可要给我的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Dim myrange As Range
cnt = Application.WorksheetFunction.Match("座", Sheets("sheet2").Range("B:B"))
For i = 2 To cnt
Set myrange = ThisWorkbook.Sheets("sheet1").Cells.find(What:=ThisWorkbook.Sheets("sheet2").Cells(i, 2))
If myrange.Column - 1 >= 1 Then
ThisWorkbook.Sheets("sheet2").Cells(i, 1) = myrange.Offset(0, -1)
End If
Next
在sheet2中 数据要在A B 列中 或者你自己改下
cnt = Application.WorksheetFunction.Match("座", Sheets("sheet2").Range("B:B"))
For i = 2 To cnt
Set myrange = ThisWorkbook.Sheets("sheet1").Cells.find(What:=ThisWorkbook.Sheets("sheet2").Cells(i, 2))
If myrange.Column - 1 >= 1 Then
ThisWorkbook.Sheets("sheet2").Cells(i, 1) = myrange.Offset(0, -1)
End If
Next
在sheet2中 数据要在A B 列中 或者你自己改下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询