Esta macro usando o VBA fará o trabalho:
Public Sub ingredients()
Dim wkb As Workbook
Dim wks, wks1 As Worksheet
Set wkb = ThisWorkbook
Set wks = ActiveSheet
wks.Application.ScreenUpdating = False
mastername = "Master"
totalsheets = wkb.Worksheets.Count
For i = 1 To totalsheets
Set wks1 = wkb.Worksheets(i)
wks1name = wks1.Name
If wks1name = mastername Then
i = totalsheets
Else
Set wks1 = Nothing
End If
Next i
reviewing = True
activerow = 1
While reviewing
tradename = wks.Cells(activerow, 1)
If tradename = "" Then
reviewing = False
End If
reviewingmaster = True
activerowmaster = 1
found = 0
While reviewingmaster
sciname = wks1.Cells(activerowmaster, 1)
If sciname = "" Then
reviewingmaster = False
End If
If sciname = tradename Then
found = found + 1
If found > 1 Then
activerow = activerow + 1
wks.Rows(activerow).Insert
End If
wks.Cells(activerow, 2) = wks1.Cells(activerowmaster, 2)
wks.Cells(activerow, 3) = wks1.Cells(activerowmaster, 3)
End If
activerowmaster = activerowmaster + 1
Wend
activerow = activerow + 1
Wend
wks.Application.ScreenUpdating = True
theend = MsgBox("Finished on " & wks.Name, vbInformation)
End Sub
Você precisa abrir Macros / VBA, inserir um módulo em ThisWorkbook e colar o código no lado direito.
Tenha em mente estes:
- O código é executado na planilha ativa.
- Cada novo nome científico, além do primeiro nome comercial, é adicionado em uma nova linha.
- O código está preparado para funcionar, desde que não haja células em branco na coluna A das planilhas.
- Como supõe que o nome da planilha da lista principal é Mestre , você precisa alterar a linha
mastername="Master"
para o nome apropriado. - Definir 500 nomes comerciais e 5000 nomes científicos levou 23 segundos.