Combinazioni per i membri nelle riunioni (Microsoft Excel)
Bob ha un foglio di lavoro con i nomi dei membri in basso a sinistra e i mesi dell’anno in alto. In ogni cella della griglia inserisce le date in cui si verificano le riunioni cui ha partecipato il membro. Bob sta cercando un modo per dire a colpo d’occhio chi non ha incontrato chi.
Esistono diversi modi in cui è possibile affrontare una soluzione a questo problema. Se il design del tuo tavolo è flessibile, puoi “semplificare” le cose cambiando il modo in cui è disposto il tuo tavolo. Invece di mettere i mesi nelle colonne, puoi semplicemente fare in modo che ogni colonna sia una data di riunione.
Quindi, ogni cella potrebbe contenere una sorta di indicatore (un numero o un carattere) che indica la persona che ha partecipato alla riunione in quella particolare data. Sarebbe stato un processo relativamente facile capire chi non aveva incontrato chi:
-
Scegli il membro chiave, quello che desideri controllare e spostalo all’inizio della tabella dei dati.
-
Ordinare la tabella dei dati orizzontalmente sulla riga del membro chiave, in modo che tutte le riunioni a cui ha partecipato il membro chiave si trovino nelle colonne più a sinistra.
-
Ordinare verticalmente tutti tranne il membro chiave nelle prime tre date della riunione. Tutti coloro che hanno incontrato il membro chiave in quei tre incontri sono ora in cima alla tabella dei dati, appena sotto il membro chiave.
-
Spostati verso il basso nella tabella dei dati e seleziona tutti coloro che non hanno ancora incontrato il membro chiave e ordina le tre date della riunione successive.
-
Ripetere i passaggi 3 e 4 fino a quando tutte le date della riunione non sono state ordinate.
-
Tutti coloro che rimangono in fondo alla tabella dei dati (quelli non selezionati nei passaggi 3 e 4) non hanno mai incontrato il membro chiave.
Se non è possibile modificare il formato della tabella, è necessaria una soluzione macro. Ci sono molti approcci che potrebbero essere usati in una macro, ma il seguente è forse il più diretto:
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
Questa macro presuppone un paio di cose. Innanzitutto, si presume che la tabella dati originale di Bob si trovi su Sheet1, a partire dalla cella A1. In secondo luogo, si presuppone che la tabella “chi non ha incontrato chi” dovrebbe essere su Sheet2, a partire dalla cella A1. Se questi presupposti sono corretti, quando si esegue la macro, la tabella creata su Sheet2 mostra i nomi in basso a sinistra e i nomi in alto. Le celle che si intersecano non conterranno nulla (il che significa che le persone si sono incontrate) o una X maiuscola (il che significa che non si sono incontrate).
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (2304) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: