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

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

рабочий лист. Во-первых, убедитесь, что вы выбрали своих активных клиентов и назвали их «Активными». (Как вы определяете имя для выбранного диапазона ячеек, описано в других ExcelTips.) Затем в свой полный список клиентов добавьте столбец (с именем Status) справа от ваших существующих данных. В ячейках столбца «Статус» используйте следующую формулу:

=IF(ISNA(VLOOKUP(A2,Active,1,FALSE)),"Inactive","Active")

Эта формула предполагает, что имя клиента находится в столбце A текущего рабочего листа. Результатом формулы будет либо «Активный», либо «Неактивный» в зависимости от того, есть ли совпадение между именем в A2 и именами в активном списке.

После того, как столбец «Состояние» находится на месте, вы можете использовать функцию автофильтра Excel для фильтрации списка на основе столбца состояния. Затем вы можете легко отобразить неактивных клиентов по своему желанию.

Следует отметить, что хотя в приведенном выше примере используется функция рабочего листа ВПР, вы можете так же легко составить другие формулы, использующие такие функции, как ГПР и ПОИСКПОЗ. То, что вы используете, зависит от ваших личных предпочтений и способа размещения ваших данных.

Другое решение — использовать макрос для сравнения каждого имени в списке «все клиенты» с именами в списке «активных клиентов». Если совпадений не найдено, то имя можно смело добавлять к «неактивным клиентам»

список. Следующий макрос делает именно это:

Sub ListInactive()

Dim cell As Range     Dim SearchRng As Range

Set SearchRng = Worksheets("Sheet2").Range("A:A")

Counter = 1 'First row on Sheet3 contains headings     For Each cell In Worksheets("Sheet1")

.Range("A2:A1000") _       .SpecialCells(xlCellTypeConstants)

ID = cell 'Client ID         NM = cell.Offset(0, 1) 'Client name         MatchRow = 0         On Error Resume Next         MatchRow = WorksheetFunction.Match(ID, _           SearchRng, 0)

On Error GoTo 0         If MatchRow = 0 Then             Counter = Counter + 1             Worksheets("Sheet3").Cells(Counter, 1) = ID             Worksheets("Sheet3").Cells(Counter, 2) = NM         End If     Next cell End Sub

Макрос делает несколько предположений относительно исследуемых данных.

Во-первых, предполагается, что рабочий лист «все клиенты» является первым листом, а рабочий лист «активных клиентов» — вторым. Кроме того, предполагается, что третий лист пуст и будет содержать список неактивных клиентов. Кроме того, предполагается, что столбец A содержит уникальный идентификационный номер клиента, а столбец B содержит имя клиента. Когда макрос будет завершен, третий рабочий лист будет содержать номера клиентов и имена всех неактивных клиентов.

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

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

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

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

Этот совет (2053) применим к Microsoft Excel 97, 2000, 2002 и 2003.