Bob tiene una hoja de trabajo que tiene los nombres de los miembros en el lado izquierdo y los meses del año en la parte superior. En cada celda de la cuadrícula ingresa las fechas en las que ocurren las reuniones a las que asistió el miembro. Bob está buscando una forma de saber de un vistazo quién no se ha reunido con quién.

Hay varias formas de abordar la solución a este problema. Si el diseño de su mesa es flexible, puede «simplificar» las cosas cambiando la forma en que está distribuida. En lugar de poner meses en las columnas, simplemente puede hacer que cada columna sea una fecha de reunión.

Luego, cada celda podría contener algún tipo de indicador (un número o un carácter) que indique que la persona asistió a la reunión en esa fecha en particular. Sería un proceso relativamente fácil averiguar quién no se había reunido con quién:

  1. Elija el miembro clave, el que desea verificar, y muévalo a la parte superior de su tabla de datos.

  2. Ordene la tabla de datos horizontalmente en la fila de miembros clave, de modo que todas las reuniones a las que asistió el miembro clave estén en las columnas más a la izquierda.

  3. Ordene a todos, excepto al miembro clave, verticalmente en las primeras tres fechas de reunión. Todos los que conocieron al miembro clave en esas tres reuniones están ahora en la parte superior de la tabla de datos, justo debajo del miembro clave.

  4. Desplácese hacia abajo en la tabla de datos y seleccione a todos los que aún no han conocido al miembro clave y ordene en las próximas tres fechas de reunión.

  5. Repita los pasos 3 y 4 hasta que se hayan ordenado todas las fechas de la reunión.

  6. Todos los que permanecen en la parte inferior de la tabla de datos (los que no se seleccionaron en los pasos 3 y 4) nunca han conocido al miembro clave.

Si no puede cambiar el formato de su tabla, entonces se necesita una solución macro. Hay muchos enfoques que podrían usarse en una macro, pero el siguiente es quizás el más directo:

Sub PeopleNotMet()

Dim rTable As Range     Dim rOutput As Range     Dim iCols As Integer     Dim iCol As Integer     Dim iRows As Integer     Dim iRow As Integer     Dim iCompRow As Integer     Dim sNotMet As String     Dim sMet As String

Set rTable = Worksheets("Sheet1").Range("A1").CurrentRegion     Set rOutput = Worksheets("Sheet2").Range("a1")

sNotMet = "X"

sMet = ""



Application.ScreenUpdating = False     With rTable         iRows = .Rows.Count         iCols = .Columns.Count                  .Columns(1).Copy         With rOutput             .PasteSpecial             .PasteSpecial Transpose:=True             Application.CutCopyMode = False             Range(.Offset(1, 1), .Offset(iRows - 1, _               iRows - 1)).Value = sNotMet             Range(.Offset(1, 1), .Offset(iRows - 1, _               iRows - 1)).HorizontalAlignment = xlCenter         End With     End With     With rTable.Cells(1)

For iRow = 1 To iRows - 1             For iCol = 1 To iCols - 1                 For iCompRow = 1 To iRows - 1                     If Not (IsEmpty(.Offset(iRow, iCol))) Then                         If Not (IsEmpty(.Offset(iCompRow, iCol))) Then                             If .Offset(iRow, iCol).Value = _                               .Offset(iCompRow, iCol).Value Then _                               rOutput.Offset(iRow, iCompRow).Value = sMet                         End If                     End If                 Next             Next         Next     End With

Set rTable = Nothing     Set rOutput = Nothing     Application.ScreenUpdating = True End Sub

Esta macro asume un par de cosas. Primero, asume que la tabla de datos original de Bob está en Sheet1, comenzando en la celda A1. En segundo lugar, se supone que la tabla «quién no se ha reunido con quién» debe estar en la Hoja2, comenzando en la celda A1. Si estas suposiciones son correctas, cuando ejecute la macro, la tabla creada en Sheet2 muestra los nombres en el lado izquierdo y los nombres en la parte superior. Las celdas que se cruzan contendrán nada (lo que significa que las personas se han reunido) o una X mayúscula (lo que significa que no se han reunido).

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (2304) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

link: / excelribbon-Combinations_for_Members_in_Meetings [Combinaciones para miembros en reuniones].