Ігноруйте дублікати та створюйте новий список унікальних значень у Excel


77

У мене є стовпець значень, які часто відображаються як дублікати. Мені потрібно створити новий стовпець з унікальними значеннями на основі першого стовпця, таким чином:

Column A   Column B  
a          a
a          b
b          c
c
c

Цей стовпець B насправді повинен буде відображатися на іншому аркуші в межах тієї самої книги, тому я припускаю, що йому потрібно буде працювати з sheet2!A1форматом стилю.

Мені не пощастило з параметрами меню Дані / Фільтр, оскільки, здається, це працює лише за командою. Мені потрібно, щоб стовпець B автоматично оновлювався щоразу, коли нове значення вводиться в стовпець A.

Відповіді:


66

Відповідь Тотеро правильна. Посилання також дуже корисне.

В основному вам потрібна формула:

B2=INDEX($A$2:$A$20, MATCH(0, COUNTIF($B$1:B1, $A$2:$A$20), 0))

Потім натисніть ctrl+ shift+ enter(або це не буде працювати за допомогою формули масиву).

Тут слід пам’ятати дві важливі речі: повний список знаходиться у клітинках A2:A20, тоді цю формулу потрібно вставити в комірку B2(не B1так, як це дасть вам кругові посилання). По-друге, це формула масиву, тому вам потрібно натиснути ctrl+ shift+, enterінакше вона не працюватиме коректно.


9
Як позбутися від N / A та 0?
Моріц Шміц проти Хюльста

@ MoritzSchmitzv.Hülst Позбудьтесь #N/As IFERROR(...,"")та позбудьтеся, 0правильно вказавши діапазон, тобто $A$2:$A$20в прикладі, якщо вам потрібно, щоб він був динамічним, то використовуйтеOFFSET
Дан

Що робить В2 у цій формулі? Це не відносно нічого на моєму аркуші, і я лише отримую невідомо до кінця.
Eoin

2
О, я вирішив, натиснувши CTRL Shift & Enter, але тепер я отримую лише одне ім'я
Eoin

А що, якщо я хочу скопіювати цей вміст на інший аркуш?
Topa_14,

21

Існує гарне керівництво про те , як зробити це тут .

В основному щось подібне до:

=INDEX(Sheet1!$A$1:$A$20, MATCH(0, COUNTIF($B$1:B1,Sheet!$A$1:$A$20), 0))

1
Привіт Тотеро, безумовно, ця формула, здається, застосовується до того, що я хочу зробити, але вона повертає "Циркулярне попередження про посилання" і просто відображає 0 у кожній клітинці. Що я роблю не так?
tob88

5
Циркулярне посилання означає, що ваша формула знаходиться в комірці, на яку посилається та сама формула. Просто переконайтеся, що формула не знаходиться в діапазоні A1: A20 або комірки B1.
Юрі Руут,

10

У моєму випадку Excel був заморожений при використанні формули

B2 = ІНДЕКС ($ A $ 2: $ A $ 20, ЗБІГ (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 (посилання видалено, причина загибелі)


Низькі технології та дуже ефективні. Пам’ятайте, що НЕ очищайте фільтр перед копіюванням та вставленням (мабуть, очевидно для більшості з вас, але мене спіймали вперше!)
Том Оже

Посилання тут: support.office.com/en-us/article/…
tavnab

5

У відсортованому стовпці ви також можете спробувати цю ідею:

B2=A2
B3=IFERROR(INDEX(A:A,MATCH(B2,A:A,1)+1),"")

В3 можна вклеїти. Результат буде 0, після останнього унікального поєдинку. Якщо це небажано, поставте дещо твердження IF, щоб виключити це.

Редагувати:

Простіше, ніж твердження IF, принаймні для текстових значень:

B3=IFERROR(T(INDEX(A:A,MATCH(B2,A:A,1)+1)),"")

ваша формула не вдається, якщо дані "aabbcced d"
Фахім Паркар

@FahimParkar так, я знаю, як я вже сказав: "На відсортованій колонці"
Jook

о, я цього не помітив. Краще виділити такі моменти (які є імп)
Фахім Паркар

будь ласка. Зазвичай кожен просто вибере код і напише. Ніхто не читав (принаймні сам) усіх текстів. так що краще виділити імп точку. Насолоджуйтесь ТАК ...
Фахім Паркар

5

Щоб видалити дублікати зі стовпця

  1. Відсортуйте значення у стовпці A A-> Z
  2. Виберіть стовпець B
  3. Поки стовпець B все ще вибраний, у полі введення формули введіть

    =IF(TRIM(A1)=TRIM(A2),"",TRIM(A1))
    
  4. Поки стовпець B все ще вибрано, виберіть Редагувати -> Заповнення -> Вниз (у новіших версіях просто виділіть комірку B1 і потягніть зовнішнє поле, щоб розгорнути весь стовпець вниз).

Примітка : якщо стовпець B знаходиться на іншому аркуші, ви можете зробити Аркуш1! А1 та Аркуш1! А2.


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

2

У мене є список назв кольорів у діапазоні A2: A8, у стовпці BI хочу виділити окремий список назв кольорів.

Виконайте наведені нижче кроки:

  • Виберіть комірку B2; напишіть формулу для отримання унікальних значень зі списку.
  • =IF(COUNTIF(A$2:A2,A2)=1,A2,””)
  • Натисніть Enterна клавіатурі.
  • Функція поверне ім'я першого кольору.
  • Щоб повернути значення для решти комірок, скопіюйте ту саму формулу вниз. Щоб скопіювати формулу в діапазоні B3: B8, скопіюйте формулу в комірку B2, натиснувши клавішу CTRL+Cна клавіатурі, та вставте в діапазон B3: B8, натиснувши клавішуCTRL+V .
  • Тут ви можете побачити результати, де ми маємо унікальний список назв кольорів.

0

Отже, для цього завдання Спочатку відсортуйте свої дані в порядку від A до Z або Z до A, тоді ви можете просто скористатися однією простою формулою, як зазначено нижче:

=IF(A2=A3, "Duplicate", "Not Duplicate")

У наведеній вище формулі зазначено, що якщо дані стовпця A2 (A - стовпець, а 2 - номер рядка) подібні до A3 (A - стовпець, а 3 - номер рядка), тоді він надрукує Duplicate, інакше буде надруковано Not Duplicate.

Давайте розглянемо приклад, стовпець A складається з адреси електронної пошти, в якій деякі є дубльованими, тому в стовпці 2 я використав вищезазначену формулу, яка в результатах показала мені 2 клітинки-дублікати, одна з них - Рядок 2 та Рядок 6.

Якщо ви отримали дублікати даних, просто покладіть фільтр на ваш аркуш, зробіть видимими лише дублікати даних і видаліть усі непотрібні дані.


0

Чесно кажучи, я наслідував ці приклади для трійника, і вони просто не працювали. Що я закінчив робити після безглуздої боротьби, намагаючись змусити Excel працювати, це просто скопіювати весь вміст мого стовпця в NotePad ++, де я зміг знайти легке рішення за лічені хвилини. Погляньте на це: Видалення повторюваних рядків у Notepad ++

Редагувати: Ось короткий огляд того, як це зробити в TextFX:

Плагіни -> Менеджер плагінів -> Показати диспетчер плагінів -> Доступна вкладка -> TextFX -> Встановити

Після того, як TextFX встановлено в NotePad ++, тоді ви вибираєте весь текст, з якого ви хочете видалити дублікати, а потім обов’язково поставте прапорець: TextFX -> TextFX Tools -> Sort outputs only UNIQUE lines

Потім натисніть «сортувати рядки, чутливі до регістру» або «сортувати рядки, чутливі до регістру», і воно виконає унікальне сортування.


0

Знайдіть тут згадану вище формулу з контролем помилок

=IFERROR(INDEX($B$2:$B$9, MATCH(0,COUNTIF($D$1:D1, $B$2:$B$9), 0)),"") 

де: (B2: B9 - це дані стовпця, з яких потрібно витягти унікальні значення, D1 - це наведена вище комірка, де знаходиться ваша формула)


0

Все, що вам потрібно зробити, це: Перейти на вкладку Дані Обрати додатково в Сортування та фільтрування У діях вибрати: скопіювати в інше місце, якщо потрібно новий список - Копіювати в будь-яке місце У списку діапазону виберіть список, для якого потрібно видалити записи. І найголовніше - це перевірити: лише унікальні записи.


0
=SORT(UNIQUE(A:A))

Наведена вище формула найкраще працює, якщо ви хочете перерахувати унікальні значення в стовпці.


FYI, UNIQUE()доступний лише в Office 365, а не в старих Excels.
Росс Паттерсон,

0

Ще один підхід, починаючи з Excel 2016, - використання Power Query.

Як:

  • виберіть дані (включаючи назву поля),
  • використовувати меню Data>From a table or a range ,
  • (Excel перетворить ваш аркуш на таблицю Excel, що дуже зручно),
  • у редакторі запитів Power, клацніть правою кнопкою миші ColumnA (заголовок стовпця) і Remove duplicates,
  • у меню виберіть Close and load, виберіть, де ви хочете отримати результат, і все готово, ось так .
  • Щоразу, коли ви хочете, щоб таблиця результатів оновлювалась, клацніть її правою кнопкою миші та виберіть Refresh.

Переваги:

  • він використовує центральний процесор лише при ручному оновленні, що дуже зручно для довгих списків,
  • якщо вам цікаво, це пропонує безліч інших потужних опцій.

Недоліки:

  • він не оновлюється на льоту (потрібно клацнути правою кнопкою миші та оновити таблицю результатів),
  • люди зі старою версією Excel не зможуть оновити таблицю результатів.

-6

СУЧАСНИЙ підхід полягає у розгляді випадків, коли колонка інформації надходить від веб-служби, такої як джерело 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);

        });
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.