Игнорировать дубликаты и создать новый список уникальных значений в Excel
у меня есть столбец значений, которые часто появляются в качестве дублирующих. Мне нужно создать новый столбец уникальных значений на основе первого столбца, как показано ниже:
Column A Column B
a a
a b
b c
c
c
этот столбец B на самом деле должен появиться на другом листе, в той же книге, поэтому я предполагаю, что ему нужно будет работать с sheet2!A1 формат стиля.
мне не повезло с параметрами меню Data / Filter, поскольку это работает только по команде. Мне нужен столбец B для автоматического обновления всякий раз, когда новое значение заносится в столбец A.
12 ответов:
ответ Тотеро правильный. Ссылка Также очень полезна.
в основном Формулы, что вам нужно, это:
B2=INDEX($A:$A, MATCH(0, COUNTIF($B:B1, $A:$A), 0))нажмите клавишу ctrl+shift+введите (или он не будет работать с помощью формулы массива).
здесь нужно иметь в виду две важные вещи: полный список находится в ячейках
A2:A20, то эта формула должна быть вставлена в ячейкуB2(неB1как это даст вам круговую ссылку). Во-вторых это формула массива, поэтому вам нужно нажать ctrl+shift+введите или он не будет работать правильно.
есть хорошее руководство как это сделать здесь.
в основном что-то похожее на:
=INDEX(Sheet1!$A:$A, MATCH(0, COUNTIF($B:B1,Sheet!$A:$A), 0))
в моем случае Excel был заморожен при использовании формулы
B2=индекс ($A$2:$A $ 20, MATCH (0, COUNTIF ($B$1: B1, $A$2:$A$20), 0))
потому что было много строк (10000). Поэтому я сделал по-другому, что я показываю ниже.
Я скопировал свой исходный список во второй столбец, а затем с помощью функции Excel "удалить дубликаты" я мог бы найти список уникальных значений.
скопировано из Microsoft Office Сайт:
Select all the rows, including the column headers, in the listвы хотите фильтровать.
нажмите на верхнюю левую ячейку диапазона, а затем перетащите в нижнюю правую ячейку.
On the Data menu, point to Filter, and then click Advanced Filter. In the Advanced Filter dialog box, click Filter the list, in place. Select the Unique records only check box, and then click OK.отображается отфильтрованный список, а повторяющиеся строки скрыты.
On the Edit menu, click Office Clipboard.отображается панель задач буфер обмена.
Make sure the filtered list is still selected, and then click Copy Copy button.отфильтрованный список подсвечивается ограничивающими контурами, и выделение отображается как элемент > > в верхней части экрана. Буфер.
On the Data menu, point to Filter, and then click Show All.исходный список отображается повторно.
Press the DELETE key.исходный список удаляется.
In the Clipboard, click on the filtered list item.отфильтрованный список отображается в том же месте, что и исходный список.
источник: Сайт Microsoft Office (ссылка удалена, причина смерти)
на отсортированный столбец, вы также можете попробовать эту идею:
B2=A2 B3=IFERROR(INDEX(A:A,MATCH(B2,A:A,1)+1),"")B3 можно вставить вниз. Это приведет к 0, после последнего уникального матча. Если это нежелательно, поместите некоторое заявление IF, чтобы исключить это.
Edit:
проще, чем оператор IF, по крайней мере для текстовых значений:
B3=IFERROR(T(INDEX(A:A,MATCH(B2,A:A,1)+1)),"")
чтобы удалить дубликаты из столбца
- Сортировать значения в столбце A A - >Z
- выберите столбец B
пока столбец B все еще выбран, в поле ввода формулы введите
=IF(TRIM(A1)=TRIM(A2),"",TRIM(A1))пока столбец B все еще выбран, выберите Edit - > Fill - > Down (в более новых версиях просто выберите ячейку B1 и потяните вниз внешнее поле, чтобы развернуть весь путь вниз в колонка)
Примечание: если столбец b находится на другом листе, вы можете сделать Лист1!А1 и Лист1!А2.
в модуле рабочего листа для листа, содержащего список:
Private Sub Worksheet_Change(ByVal Target As Range) Dim rngDest As Range If Not Intersect(Target, Me.Columns(1)) Is Nothing Then Set rngDest = ThisWorkbook.Sheets("Sheet2").Range("A1") Me.Range(Me.Range("A2"), Me.Cells(Rows.Count, 1).End(xlUp)).AdvancedFilter _ Action:=xlFilterCopy, CopyToRange:=rngDest, Unique:=True End If End Sub
У меня есть список имен цветов в диапазоне A2:A8, в столбце B Я хочу извлечь отдельный список имен цветов.
выполните следующие действия:
- выберите ячейку B2; напишите формулу для извлечения уникальных значений из списка.
=IF(COUNTIF(A:A2,A2)=1,A2,””)- пресс введите на клавиатуре.
- функция вернет имя первого цвета.
- чтобы вернуть значение для остальных ячеек, скопируйте та же формула вниз. Чтобы скопировать формулу в диапазоне B3: B8, скопируйте формулу в ячейку B2, нажав клавишу CTRL+C на клавиатуре и вставьте в диапазон B3:B8, нажав клавишу CTRL+V.
- здесь вы можете увидеть выход, где у нас есть уникальный список имен цветов.
поэтому для этой задачи сначала отсортируйте свои данные по порядку от A до Z или Z до A, затем вы можете просто использовать одну простую формулу, как указано ниже:
=IF(A2=A3, "Duplicate", "Not Duplicate")в приведенной выше формуле указано, что если данные столбца A2 ( a-столбец и 2-номер строки) похожи на A3 (A-столбец и 3-Номер строки), то он будет печатать дубликат, иначе печать не будет дублироваться.
давайте рассмотрим пример, столбец A состоит из адреса электронной почты, в котором некоторые дублируются, поэтому в столбце 2 я использовал выше указанная формула, которая в результатах отображала мне 2 дубликата ячеек одна строка 2 и строка 6.
один вы получили дубликаты данных просто поставить фильтр на листе и сделать видимыми только дубликаты данных и удалить все ненужные данные.
честно говоря я за эти примеры, а они просто не работали. То, что я в конечном итоге сделал после бессмысленных попыток заставить Excel работать, было просто скопировать все содержимое моей колонки в NotePad++, где я смог найти простое решение в течение нескольких минут. Взгляните на это: удаление повторяющихся строк в Notepad++
Edit: вот краткий обзор того, как это сделать в TextFX:
Плагины - > Менеджер Плагинов - > Показать Плагин Менеджер - > Доступная вкладка - > TextFX - > установить
после установки TextFX в NotePad++ выберите весь текст, из которого вы хотите удалить дубликаты, а затем убедитесь, что вы проверили: TextFX -> TextFX Tools -> Sort выводит только уникальные строки
затем нажмите кнопку "сортировать строки с учетом регистра "или" сортировать строки без учета регистра", и он выполнит уникальную сортировку.
найти здесь упомянутая выше формула с контролем ошибки
=IFERROR(INDEX($B:$B, MATCH(0,COUNTIF($D:D1, $B:$B), 0)),"")где: (B2:B9-это данные столбца, которые вы хотите извлечь уникальные значения, D1-это ячейка выше, где находится ваша формула)
все, что вам нужно сделать, это : Перейти на вкладку Данные Выберите дополнительно в сортировке и фильтре В разделе действия выберите: Копировать в другое место, если требуется новый список - Копировать в любое место В списке диапазон выберите список, который вы хотите получить записи . И самое главное-проверить : Только уникальные записи .
современный подход заключается в рассмотрении случаев, когда столбец информации поступает из веб-службы, такой как источник OData. Если вам нужно создать фильтр выберите поля из массивных данных, которые имеют реплицированные значения для столбца, рассмотрим код ниже:
var CatalogURL = getweb(currenturl) +"/_api/web/lists/getbytitle('Site%20Inventory%20and%20Assets')/items?$select=Expense_x0020_Type&$orderby=Expense_x0020_Type"; /* the column that is replicated, is ordered by <column_name> */ OData.read(CatalogURL, function(data,request){ var myhtml =""; var myValue =""; for(var i = 0; i < data.results.length; i++) { myValue = data.results[i].Expense_x0020_Type; if(i == 0) { myhtml += "<option value='"+myValue+"'>"+myValue+"</option>"; } else if(myValue != data.results[i-1].Expense_x0020_Type) { myhtml += "<option value='"+myValue+"'>"+myValue+"</option>"; } else { } } $("#mySelect1").append(myhtml); });
Comments