Vba 多次在同一工作表中查找单元格值以及查找到的值旁边的值
这是我输入文件中的数据示例。我有一个带有命令按钮的Excel工作表,单击它将激活包含我输入的sheet2 A列是我的来源。我想检查该列中的每个元素(A1、A2等),并检查是否在表中找到它。如果找到了,我需要选中“选择下一个单元格值”,并将其与找到的下一个单元格值进行比较。如果两者相同,则应将两个A2、B2值复制到表3中。Vba 多次在同一工作表中查找单元格值以及查找到的值旁边的值,vba,excel,Vba,Excel,这是我输入文件中的数据示例。我有一个带有命令按钮的Excel工作表,单击它将激活包含我输入的sheet2 A列是我的来源。我想检查该列中的每个元素(A1、A2等),并检查是否在表中找到它。如果找到了,我需要选中“选择下一个单元格值”,并将其与找到的下一个单元格值进行比较。如果两者相同,则应将两个A2、B2值复制到表3中。 我必须在sheet2中再次搜索,看看是否找到它,然后这次我需要检查当前元素右侧的2个单元格,以及元素。将它们复制到第3页 例如。 A2=fc1/1,B2=Test\u port
我必须在sheet2中再次搜索,看看是否找到它,然后这次我需要检查当前元素右侧的2个单元格,以及元素。将它们复制到第3页 例如。
A2=fc1/1,B2=Test\u port\u description\u 1,c2=21:00:00:12:34:56:7
首先,我要选择A2值,并尝试在工作表中找到它。
当在f2=fc1/1中找到find A2=fc1/1时,现在我需要检查 B2值等于G2值。如果两者相同,则将A2和B2值复制到表3 我想再次继续搜索A2=fc1/1,找到H5=fc1/1,abde。现在我需要检查C2=21:00:00:00:12:34:56:78是否与H6=21:00:00:00:12:34:56:78相同,如果相同,则复制找到值的下一列中的值C3,如果未找到,则为单元格提供颜色编码。。如第3页第二列为红色,第三列为黄色…
选项
Source Port # Source Port Description Source port Pwwn Switch Port Switch Port Description Flolgi port Flogi pwwn
fc1/1 Test_port_description_1 21:00:00:00:12:34:56:78 fc1/1 Test_port_description_1
fc1/2 Test_port_description_2 21:00:00:00:12:34:56:79 fc1/2 Test_port_description_2 fc1/0,abde 21:00:00:00:12:34:56:78
fc1/3 Test_port_description_3 21:00:00:00:12:34:56:80 fc1/3 Test_port_description fc1/2,abde 21:00:00:00:12:34:56:79
fc1/4 Test_port_description_4 21:00:00:00:12:34:56:81 fc1/4 Test_port_description_4 fc1/1,abde 21:00:00:00:12:34:56:80
fc1/5 Test_port_description_5 21:00:00:00:12:34:56:82 fc1/5 Test_port_description_5 fc1/4,abde 21:00:00:00:12:34:56:81
fc1/5,abde 21:00:00:00:12:34:56:82
私有子查找端口PWW_单击()
Dim SourcePort As范围
将第一个地址设置为字符串
暗i为长,j为长,N为长
作为整数的Dim计数器
将工作表调整为工作表
'正在停止应用程序警报
Application.DisplayAlerts=False
'或者您可以提及图纸名称
错误转到SheetNotFound时:
工作表(“最终结果表”)。删除
'创建新的结果工作表。
ThisWorkbook.Worksheets.Add(在:=工作表(“输入工作表”)之后)。Name=“最终结果表”
'完成任务后启用应用程序警报
Application.DisplayAlerts=True
设置工作表=活动工作簿。工作表(2)
工作表。激活
N=工作表.单元格(Rows.Count,“A”).End(xlUp).行
'MsgBox(N)
对于i=1到N
'MsgBox(工作表单元格(i,“A”).值)
'MsgBox(工作表单元格(i,“A”)。偏移量(0,1)。值)
设置SourcePort=WorkingSheet.Cells.Find(WorkingSheet.Cells(i,“A”).Value,WorkingSheet.Cells(i,“A”),LookIn:=xlValues)
'MsgBox(SourcePort.Address)
firstaddress=SourcePort.Address
做
如果(InStr(SourcePort.Value,“,”),则
如果WorkingSheet.Cells(i,“A”).Offset(0,2).Value=SourcePort.Offset(0,1).Value则
此工作簿.Worksheets(3).单元格(i,“A”).Value=工作表.Cells(i,“A”).Value
此工作簿。工作表(3)。单元格(i,“A”)。偏移量(0,2)=工作表。单元格(i,“A”)。偏移量(0,2)。值
其他的
此工作簿.Worksheets(3).单元格(i,“A”).Value=工作表.Cells(i,“A”).Value
此工作簿。工作表(3)。单元格(i,“A”)。偏移量(0,2)。值=工作表。单元格(i,“A”)。偏移量(0,2)。值
此工作簿。工作表(3)。单元格(i,“A”)。偏移量(0,2)。Interior.Color=RGB(255,126,135)
如果结束
其他的
如果WorkingSheet.Cells(i,“A”).Offset(0,1).Value=SourcePort.Offset(0,1).Value则
此工作簿.Worksheets(3).单元格(i,“A”).Value=工作表.Cells(i,“A”).Value
此工作簿.工作表(3).单元格(i,“A”).偏移量(0,1)=工作表.单元格(i,“A”).偏移量(0,1).值
其他的
此工作簿.Worksheets(3).单元格(i,“A”).Value=工作表.Cells(i,“A”).Value
此工作簿。工作表(3)。单元格(i,“A”)。偏移量(0,1)。值=工作表。单元格(i,“A”)。偏移量(0,1)。值
此工作簿。工作表(3)。单元格(i,“A”)。偏移量(0,1)。Interior.Color=RGB(255,0,0)
如果结束
如果结束
设置SourcePort=WorkingSheet.Cells.FindNext(SourcePort)
循环而非SourcePort为Nothing和firstaddress SourcePort.Address
MsgBox(SourcePort.Value)
接下来我
出口接头
未找到的表格:
MsgBox(“未找到最终结果工作表”)
端接头
我能够将正确的数据发送到sheet3,但在为未找到的值设置颜色代码时遇到困难。我无法按照逻辑改变颜色。
Option Explicit
Private Sub FindingPortPwwn_Click()
Dim SourcePort As Range
Dim firstaddress As String
Dim i As Long, j As Long, N As Long
Dim counter As Integer
Dim WorkingSheet As Worksheet
'Stopping Application Alerts
Application.DisplayAlerts = False
'OR You can mention the Sheet name
On Error GoTo SheetNotFound:
Sheets("Final Results Sheet").Delete
'Creating a New Results Worksheet.
ThisWorkbook.Worksheets.Add(After:=Worksheets("Input_Worksheet")).Name = "Final Results Sheet"
'Enabling Application alerts once we are done with our task
Application.DisplayAlerts = True
Set WorkingSheet = ActiveWorkbook.Worksheets(2)
WorkingSheet.Activate
N = WorkingSheet.Cells(Rows.Count, "A").End(xlUp).Row
'MsgBox (N)
For i = 1 To N
'MsgBox (WorkingSheet.Cells(i, "A").Value)
'MsgBox (WorkingSheet.Cells(i, "A").Offset(0, 1).Value)
Set SourcePort = WorkingSheet.Cells.Find(WorkingSheet.Cells(i, "A").Value, WorkingSheet.Cells(i, "A"), LookIn:=xlValues)
'MsgBox (SourcePort.Address)
firstaddress = SourcePort.Address
Do
If (InStr(SourcePort.Value, ",")) Then
If WorkingSheet.Cells(i, "A").Offset(0, 2).Value = SourcePort.Offset(0, 1).Value Then
ThisWorkbook.Worksheets(3).Cells(i, "A").Value = WorkingSheet.Cells(i, "A").Value
ThisWorkbook.Worksheets(3).Cells(i, "A").Offset(0, 2) = WorkingSheet.Cells(i, "A").Offset(0, 2).Value
Else
ThisWorkbook.Worksheets(3).Cells(i, "A").Value = WorkingSheet.Cells(i, "A").Value
ThisWorkbook.Worksheets(3).Cells(i, "A").Offset(0, 2).Value = WorkingSheet.Cells(i, "A").Offset(0, 2).Value
ThisWorkbook.Worksheets(3).Cells(i, "A").Offset(0, 2).Interior.Color = RGB(255, 126, 135)
End If
Else
If WorkingSheet.Cells(i, "A").Offset(0, 1).Value = SourcePort.Offset(0, 1).Value Then
ThisWorkbook.Worksheets(3).Cells(i, "A").Value = WorkingSheet.Cells(i, "A").Value
ThisWorkbook.Worksheets(3).Cells(i, "A").Offset(0, 1) = WorkingSheet.Cells(i, "A").Offset(0, 1).Value
Else
ThisWorkbook.Worksheets(3).Cells(i, "A").Value = WorkingSheet.Cells(i, "A").Value
ThisWorkbook.Worksheets(3).Cells(i, "A").Offset(0, 1).Value = WorkingSheet.Cells(i, "A").Offset(0, 1).Value
ThisWorkbook.Worksheets(3).Cells(i, "A").Offset(0, 1).Interior.Color = RGB(255, 0, 0)
End If
End If
Set SourcePort = WorkingSheet.Cells.FindNext(SourcePort)
Loop While Not SourcePort Is Nothing And firstaddress <> SourcePort.Address
MsgBox (SourcePort.Value)
Next i
Exit Sub
SheetNotFound:
MsgBox (" Final Results Worksheet not Found")
End Sub