Estás son las macros, tienes que poner en las macros algunos datos que no mencionaste en tu ejemplo.
Los datos que tienes que poner en cada macro son:
- El nombre del libro "base de datos"
- El nombre de la hoja del libro "base de datos", en la macro puse "Hoja1"
- La columna del trabajador, en la macro puse la columna "B"
- La columna del bloque, en la macro puse la columna "J"
- La columna destino, es decir, en cuál columna de la hoja con los botones se van a poner los nombres, en la macro puse la "A" para los Trabajadores que tienen "A" en el bloque, "C" para los que tienen "B" y "D" para los que tienen "C".
Macro Bloque "A"
Sub nombres_A()
'Por.Dante Amor
Set l1 = ThisWorkbook
Set h1 = l1.ActiveSheet
'
Set l2 = Workbooks("base de datos")
Set h2 = l2.Sheets("Hoja1")
'
cb = "J" 'columna del bloque
ct = "B" 'columna del trabajador
'
ca = "A" 'columna destino para poner los nombres
'
For i = 2 To h2.Range(cb & Rows.Count).End(xlUp).Row
If h2.Cells(i, cb) = "A" Then
h1.Range(ca & h1.Range(ca & Rows.Count).End(xlUp).Row + 1) = _
h2.Cells(i, ct)
End If
Next
End Sub
Macro Bloque "B"
Sub nombres_B()
'Por.Dante Amor
Set l1 = ThisWorkbook
Set h1 = l1.ActiveSheet
'
Set l2 = Workbooks("base de datos")
Set h2 = l2.Sheets("Hoja1")
'
cb = "J" 'columna del bloque
ct = "B" 'columna del trabajador
'
ca = "C" 'columna destino para poner los nombres
'
For i = 2 To h2.Range(cb & Rows.Count).End(xlUp).Row
If h2.Cells(i, cb) = "B" Then
h1.Range(ca & h1.Range(ca & Rows.Count).End(xlUp).Row + 1) = _
h2.Cells(i, ct)
End If
Next
End Sub
Macro Bloque "C"
Sub nombres_C()
'Por.Dante Amor
Set l1 = ThisWorkbook
Set h1 = l1.ActiveSheet
'
Set l2 = Workbooks("base de datos")
Set h2 = l2.Sheets("Hoja1")
'
cb = "J" 'columna del bloque
ct = "B" 'columna del trabajador
'
ca = "E" 'columna destino para poner los nombres
'
For i = 2 To h2.Range(cb & Rows.Count).End(xlUp).Row
If h2.Cells(i, cb) = "C" Then
h1.Range(ca & h1.Range(ca & Rows.Count).End(xlUp).Row + 1) = _
h2.Cells(i, ct)
End If
Next
End Sub