У Боба есть рабочий лист, в котором имена участников указаны внизу слева, а месяцы года вверху. В каждой ячейке сетки он вводит даты, когда происходят собрания, на которых присутствовал участник. Боб ищет способ сразу определить, кто с кем не встречался.

Есть несколько способов решения этой проблемы. Если дизайн вашего стола гибкий, вы можете «упростить» ситуацию, изменив способ его расположения. Вместо того, чтобы помещать месяцы в столбцы, вы можете просто указать в каждом столбце дату встречи.

Затем каждая ячейка может содержать какой-то индикатор (число или символ), который указывает, что человек присутствовал на встрече в этот конкретный день. Было бы относительно легко выяснить, кто с кем не встречался:

  1. Выберите ключевого члена, которого вы хотите проверить, и переместите его / ее в верхнюю часть таблицы данных.

  2. Сортируйте таблицу данных по горизонтали в строке ключевого члена, чтобы все собрания, на которых присутствовал ключевой член, находились в крайних левых столбцах.

  3. Рассортируйте всех, кроме ключевого, по вертикали в первые три даты встречи. Все, кто встречался с ключевым участником на этих трех встречах, теперь находятся в верхней части таблицы данных, чуть ниже ключевого участника.

  4. Переместитесь вниз по таблице данных и выберите всех, кто еще не встречался с ключевым участником, и отсортируйте следующие три даты встречи.

  5. Повторяйте шаги 3 и 4, пока все даты встреч не будут отсортированы.

  6. Все, кто остался внизу таблицы данных (те, кто не был выбран на шагах 3 и 4), никогда не встречали ключевого члена.

Если вы не можете изменить формат своей таблицы, тогда требуется макрорешение. Есть много подходов, которые можно использовать в макросе, но, пожалуй, наиболее прямым является следующий:

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

Этот макрос предполагает несколько вещей. Во-первых, предполагается, что исходная таблица данных Боба находится на Sheet1, начиная с ячейки A1. Во-вторых, предполагается, что таблица «кто с кем не встречался» должна находиться на Листе 2, начиная с ячейки A1. Если эти предположения верны, то при запуске макроса таблица, созданная на Sheet2, показывает имена внизу слева и имена вверху. Пересекающиеся ячейки не будут содержать ничего (это означает, что люди встретились) или заглавную букву X (что означает, что они не встретились).

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (248) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Combinations_for_Members_in_Meetings [Комбинации для участников в собраниях].