#excel #vba #excel-formula
#excel #vba #excel-формула
Вопрос:
Привет, у меня есть несколько листов, и я должен выполнить поиск и выделить каждую строку на каждом листе, используя эти критерии
In my sheet I grouped data in 2 sections (same sheet)
**Prod data** **TEST Data**
col A B C D E F col G H I J K L MATCH RESULT COL
ROWS 1 - 100 ROWS 1 - 170
Мне нужно выполнить поиск выходных данных для каждой строки на наличие столбцов A C F в тестовых данных для столбцов G I L во всех 170 строках, если все совпадают (A = G, B = I, F = L), то либо выделить зеленым, если не красным. Или в последней пустой ячейке выведите что-нибудь «совпадающее» с зеленой подсветкой.
Решениями могут быть макрос или формула. Мне приходится использовать его на многих листах с разными выборками столбцов.
Комментарии:
1. Итак, в чем именно заключается ваш вопрос? Пока вы только представили свою задачу. Я надеюсь, вы не ожидаете, что кто-то здесь выполнит вашу работу.
Ответ №1:
Я сделал это и получил свой ответ здесь
По моему требованию, левая сторона — это производственные записи, а правая сторона — записи тестового сервера. Нам нужно сравнить визуально, поэтому я извлек обе таблицы с обоих серверов и вставил в лист Excel, и этот макрос сделал все это. Вам просто нужно изменить правильные номера столбцов для листа. Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь и присылайте свои вопросы.
Sub FND1()
Dim t As Integer
Dim p As Integer
Dim icolor As Integer
Dim tval1 As Variant
Dim tval2 As Variant
Dim tval3 As Variant
Dim bFoundinProd As Boolean
NumRowsProd = 8 'Range("A1", Range("A1").End(xlDown)).Rows.Count
NumRowsTest = 10 'Range("F1", Range("F1").End(xlDown)).Rows.Count
Application.ScreenUpdating = False
' Set numrows = number of rows of data.
' Establish "For" loop to loop "numrows" number of times.
With Worksheets(1)
For t = 1 To NumRowsTest
tval1 = .Cells(t, 6).Value
tval2 = .Cells(t, 7).Value
tval3 = .Cells(t, 8).Value
For p = 1 To NumRowsProd
bFoundinProd = False
If tval1 = .Cells(p, 1).Value And _
tval2 = .Cells(p, 2).Value And _
tval3 = .Cells(p, 3).Value Then
bFoundinProd = True
.Cells(p, 1).Interior.ColorIndex = 4 '3 red 4 green 5 blue
.Cells(p, 2).Interior.ColorIndex = 4
.Cells(p, 3).Interior.ColorIndex = 4
Exit For
End If
Next p
If bFoundinProd Then
.Cells(t, 10).Value = "Found in Production. row = " amp; CStr(p)
icolor = 4 ' green
Else
icolor = 3 ' red
.Cells(t, 10).Value = "Not Found in Production"
End If
.Cells(t, 6).Interior.ColorIndex = icolor '3 red 4 green 5 blue
.Cells(t, 7).Interior.ColorIndex = icolor
.Cells(t, 8).Interior.ColorIndex = icolor
.Cells(t, 9).Interior.ColorIndex = icolor
.Cells(t, 10).Interior.ColorIndex = icolor
Next t
End With
Worksheets("Sheet1").Range("J1").Columns.AutoFit
Application.ScreenUpdating = True
End Sub