Прескочи на основното съдържание

Как да извлека уникални стойности от множество колони в Excel?

Автор: Xiaoyang Последна промяна: 2024-03-15

Да предположим, че имате няколко колони с множество стойности, някои стойности се повтарят в същата колона или различна колона. И сега искате да намерите стойностите, които присъстват в която и да е колона само веднъж. Има ли бързи трикове за извличане на уникални стойности от множество колони в Excel?


Извличайте уникални стойности от множество колони с формули

Този раздел ще обхване две формули: едната използва формула за масив, подходяща за всички версии на Excel, а другата използва формула за динамичен масив специално за Excel 365.

Извличайте уникални стойности от множество колони с формула за масив за всички версии на Excel

За потребители с всяка версия на Excel формулите за масиви могат да бъдат мощен инструмент за извличане на уникални стойности в множество колони. Ето как можете да го направите:

1. Приемайки вашите стойности в диапазон A2: C9, моля, въведете следната формула в клетка E2:

=INDIRECT(TEXT(MIN(IF(($A$2:$C$9<>"")*(COUNTIF($E$1:E1,$A$2:$C$9)=0),ROW($2:$9)*100+COLUMN($A:$C),7^8)),"R0C00"),)&""
Забележка: В горната формула, A2:C9 показва диапазона от клетки, които искате да извлечете уникалните стойности, E1: E1 е първата клетка от колоната, в която искате да поставите резултата, $ 2: $ 9 стойките от редовете съдържат клетките, които искате да използвате, и $A:$C показва, че колоните съдържат клетките, които искате да използвате. Моля, променете ги със свои.

2. След това натиснете Shift + Ctrl + Enter ключове заедно и след това плъзнете манипулатора за попълване, за да извлечете уникалните стойности, докато се появят празни клетки. Вижте екранна снимка:

Обяснение на тази формула:
  1. $A$2:$C$9: Това указва диапазона от данни, който трябва да се провери, който е клетките от A2 до C9.
  2. IF(($A$2:$C$9<>"")*(COUNTIF($E$1:E1,$A$2:$C$9)=0), ROW($2:$9)*100+COLUMN($A:$C), 7^8):
    • $A$2:$C$9<>"" проверява дали клетките в диапазона не са празни.
    • COUNTIF($E$1:E1,$A$2:$C$9)=0 определя дали стойностите на тези клетки все още не са изброени в диапазона от клетки от E1 до E1.
    • Ако и двете условия са изпълнени (т.е. стойността не е празна и все още не е посочена в колона E), функцията IF изчислява уникално число въз основа на своя ред и колона (ROW($2:$9)*100+COLUMN($A: $C)).
    • Ако условията не са изпълнени, функцията връща голямо число (7^8), което служи като контейнер.
  3. МИН.(...): Намира най-малкото число, върнато от функцията IF по-горе, съответстващо на местоположението на следващата уникална стойност.
  4. ТЕКСТ(...,"R0C00"): Преобразува този минимален брой в адрес в стил R1C1. Кодът на формата R0C00 показва преобразуването на числото във формат за референтна клетка на Excel.
  5. НЕПРЯК(...): Използва функцията INDIRECT, за да преобразува адреса в стил R1C1, генериран в предишната стъпка, обратно в нормална препратка към клетка в стил A1. Функцията INDIRECT позволява рефериране на клетки въз основа на съдържанието на текстов низ.
  6. &"": Добавянето на &"" в края на формулата гарантира, че крайният резултат се третира като текст, така че четните числа ще се показват като текст.
 
Извлечете уникални стойности от множество колони с формула за Excel 365

Excel 365 поддържа динамични масиви, което прави много по-лесно извличането на уникални стойности от множество колони:

Моля, въведете или копирайте следната формула в празна клетка, където искате да поставите резултата, и след това щракнете Въведете ключ, за да получите всички уникални стойности наведнъж. Вижте екранна снимка:

=UNIQUE(TOCOL(A2:C9,1))


Извличайте уникални стойности от множество колони с Kutools AI Aide

Освободете силата на Kutools AI помощник за безпроблемно извличане на уникални стойности от множество колони в Excel. Само с няколко щраквания този интелигентен инструмент пресява вашите данни, като идентифицира и изброява уникални записи във всеки избран диапазон. Забравете неприятностите на сложните формули или vba кода; Прегърнете ефективността на Kutools AI помощник и трансформирайте вашия работен процес на Excel в по-продуктивно изживяване без грешки.

Забележка: За да използвате това Kutools AI помощник of Kutools за Excel, Моля те изтеглете и инсталирайте Kutools за Excel на първо място.

След като инсталирате Kutools за Excel, моля, щракнете Kutools AI > AI помощник за да отворите Kutools AI помощник панел:

  1. Въведете вашето изискване в полето за чат и щракнете Изпрати бутон или натиснете Въведете ключ за изпращане на въпроса;
    „Извличане на уникални стойности от диапазона A2:C9, игнориране на празните клетки, и поставяне на резултатите, започващи от E2:“
  2. След като анализирате, щракнете Изпълнение бутон за бягане. Kutools AI Aide ще обработи вашата заявка с помощта на AI и ще върне резултатите в посочената клетка директно в Excel.


Извличайте уникални стойности от множество колони с обобщена таблица

Ако сте запознати с обобщената таблица, можете лесно да извлечете уникалните стойности от множество колони със следните стъпки:

1. Първо, моля, вмъкнете една нова празна колона отляво на вашите данни, в този пример ще вмъкна колона A до оригиналните данни.

2. Щракнете върху една клетка във вашите данни и натиснете Alt + D клавиши, след което натиснете P ключ незабавно, за да отворите Съветник за обобщена таблица и обобщена диаграма, избирам Множество диапазони на консолидация в стъпка 1 на съветника вижте екранна снимка:

3, След това кликнете Напред бутон, проверете Създайте поле за една страница за мен опция в стъпка 2 на съветника, вижте екранна снимка:

4. Продължете да щракате Напред щракнете, за да изберете диапазона от данни, който включва лявата нова колона от клетки, след което щракнете Добави бутон за добавяне на диапазона от данни към Всички диапазони списъчно поле, вижте екранна снимка:

5. След като изберете диапазона от данни, щракнете върху Продължете Напред, в стъпка 3 на съветника изберете къде искате да поставите отчета с обобщена таблица, както желаете.

6. Най-накрая щракнете завършеност за да завършите съветника и е създадена обобщена таблица в текущия работен лист, след това премахнете отметките от всички полета от Изберете полета, които да добавите към отчета раздел, вижте екранна снимка:

7. След това проверете полето Стойност или плъзнете стойността към Редове етикет, сега ще получите уникалните стойности от множеството колони, както следва:


Извличайте уникални стойности от множество колони с VBA код

Със следния VBA код можете също да извлечете уникалните стойности от множество колони.

1. Задръжте натиснат ALT + F11 ключове и отваря Прозорец на Microsoft Visual Basic за приложения.

2. Щракнете Поставете > Модулии поставете следния код в прозореца на модула.

VBA: Извлечете уникални стойности от множество колони

Sub Uniquedata()
'Updateby Extendoffice
Dim rng As Range
Dim InputRng As Range, OutRng As Range
Set dt = CreateObject("Scripting.Dictionary")
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
For Each rng In InputRng
    If rng.Value <> "" Then
        dt(rng.Value) = ""
    End If
Next
OutRng.Range("A1").Resize(dt.Count) = Application.WorksheetFunction.Transpose(dt.Keys)
End Sub

3. След това натиснете F5 за да изпълните този код и ще изскочи поле за подкана, за да ви напомни да изберете диапазона от данни, който искате да използвате. Вижте екранна снимка:

4, И после щракнете върху OK, ще се появи друго поле за подкана, което ви позволява да изберете място за поставяне на резултата, вижте екранната снимка:

5. Кликнете OK за да затворите този диалогов прозорец и всички уникални стойности са извлечени наведнъж.


Още относителни статии:

  • Пребройте броя на уникалните и различни стойности от списък
  • Да предположим, че имате дълъг списък от стойности с някои дублиращи се елементи, сега искате да преброите броя на уникалните стойности (стойностите, които се появяват в списъка само веднъж) или различни стойности (всички различни стойности в списъка, това означава уникални стойности +1-ви дублирани стойности) в колона, както е показано на лявата екранна снимка. В тази статия ще говоря за това как да се справя с тази работа в Excel.
  • Извличане на уникални стойности въз основа на критерии в Excel
  • Да предположим, че имате следния диапазон от данни, в който искате да изброите само уникалните имена на колона B въз основа на конкретен критерий на колона A, за да получите резултата, както е показано на екранната снимка по-долу. Как бихте могли да се справите с тази задача в Excel бързо и лесно?
  • Разрешаване само на уникални стойности в Excel
  • Ако искате да запазите само уникални стойности, въведени в колона на работен лист и да предотвратите дублирането, тази статия ще ви представи някои бързи трикове, за да се справите с тази задача.
  • Сумирайте уникални стойности въз основа на критерии в Excel
  • Например, сега имам набор от данни, който съдържа колони Име и Поръчка, за да сумирам само уникални стойности в колоната Поръчка въз основа на колоната Име, както е показано на следната екранна снимка. Как да решите тази задача бързо и лесно в Excel?

Най-добрите инструменти за продуктивност в офиса

🤖 Kutools AI помощник: Революционизирайте анализа на данни въз основа на: Интелигентно изпълнение   |  Генериране на код  |  Създаване на персонализирани формули  |  Анализирайте данни и генерирайте диаграми  |  Извикване на функциите на Kutools...
Популярни функции: Намерете, маркирайте или идентифицирайте дубликати   |  Изтриване на празни редове   |  Комбинирайте колони или клетки без загуба на данни   |   Кръг без формула ...
Супер търсене: VLookup с множество критерии    VLookup с множество стойности  |   VLookup в няколко листа   |   Размито търсене ....
Разширен падащ списък: Бързо създаване на падащ списък   |  Зависим падащ списък   |  Падащ списък с множество избори ....
Мениджър на колони: Добавете конкретен брой колони  |  Преместване на колони  |  Превключване на състоянието на видимост на скритите колони  |  Сравнете диапазони и колони ...
Препоръчани функции: Мрежов фокус   |  Изглед на дизайна   |   Голям формула бар    Мениджър на работни книги и листове   |  Библиотека с ресурси (Автоматичен текст)   |  Избор на дата   |  Комбинирайте работни листове   |  Шифроване/декриптиране на клетки    Изпращайте имейли по списък   |  Супер филтър   |   Специален филтър (филтър получер/курсив/зачертано...) ...
Топ 15 комплекта инструменти12 Текст Инструменти (добавяне на текст, Премахване на символи, ...)   |   50 + Графика Видове (диаграма на Гант, ...)   |   40+ Практичен формули (Изчислете възрастта въз основа на рождения ден, ...)   |   19 вмъкване Инструменти (Въведете QR код, Вмъкване на картина от пътя, ...)   |   12 Конверсия Инструменти (Числа към думи, Валутен обмен, ...)   |   7 Обединяване и разделяне Инструменти (Разширено комбиниране на редове, Разделени клетки, ...)   |   ... и още

Усъвършенствайте уменията си за Excel с Kutools за Excel и изпитайте ефективност, както никога досега. Kutools за Excel предлага над 300 разширени функции за повишаване на производителността и спестяване на време.  Щракнете тук, за да получите функцията, от която се нуждаете най-много...

Описание


Раздел Office Внася интерфейс с раздели в Office и прави работата ви много по-лесна

  • Разрешете редактиране и четене с раздели в Word, Excel, PowerPoint, Publisher, Access, Visio и Project.
  • Отваряйте и създавайте множество документи в нови раздели на един и същ прозорец, а не в нови прозорци.
  • Увеличава вашата производителност с 50% и намалява стотици кликвания на мишката за вас всеки ден!
Comments (31)
Rated 5 out of 5 · 1 ratings
This comment was minimized by the moderator on the site
Thank you for this solution, however what if the columns are in separate excel sheet? or is in separate columns instead of a table?
This comment was minimized by the moderator on the site
Hello, Jon,
The methods in this article ar only works well for a range of data, if your data in separate columns, you should copy and paste them into one range first, and then apply the formula or VBA code.
Thank you!
This comment was minimized by the moderator on the site
Thank you for this great article.

For people who are using the array formular in non-English Excel there must be taken special care of the text format string: in your example: "R0C00".
For German this would translate to "Z0S00". However, "S" is a special character refering to seconds for time formating. This character needs to be escaped and therefore the correct format string for German Excel is "Z0\S00".

I hope this helps someone in the future :-)
This comment was minimized by the moderator on the site
Hello, Michael H.
Thanks for your kindly explanation.
Hope this can help others in the future.😄
This comment was minimized by the moderator on the site
Thank you for this great article.

For people who are using the array formular in non-English Excel there must be taken special care of the text format string: in your example: "R0C00".
For German this would translate to "Z0S00". However, "S" is a special character refering to seconds for time formating. This character needs to be escaped and therefore the correct format string for German Excel is "Z0\S00".

I hope this helps someone in the future :-)
This comment was minimized by the moderator on the site
Hello Sir! The VBA worked wonders, thank you very much for that! I was wondering, If I change the original data, is it possible to refresh the column with the unique values automatically?
Rated 5 out of 5
This comment was minimized by the moderator on the site
Hello Ioannis,

Glad to help. After you change the original data, the VBA can not refresh the result automatically. And the easiest way I can think of is to press Ctrl + Alt + F9 to refresh all results in worksheets in all open workbooks. Have a nice day.

Sincerely,
Mandy
This comment was minimized by the moderator on the site
The array formula at the top is working great when used with data in the same sheet, however when I try to use it to reference the same exact data from another sheet the formula returns nothing. I'm unable to figure out why. Is there a limitation with array functions that prevents you from referencing ranges in a different sheet?

Thanks for any insight you can provide.
This comment was minimized by the moderator on the site
Hello Erin,

Glad to help. The INDIRECT function in this formula is more complicated to use when referencing data in other worksheets. It is not recommended to use this feature when referencing ranges in different worksheets.

For example: Now the data is in Sheet1, I want to reference the content of cell C2 of Sheet1 in Sheet2. First, in any two cells in Sheet2, such as D1 and D2, enter Sheet1 and C2, respectively. At this point, enter the formula in the empty cell of Sheet2:
=INDIRECT("'"&D1&"'!"&D2), then the content of cell C2 in Sheet1 can be returned.

As you can see, it make things way more complex. Hope my explanation can help. Have a nice day.

Sincerely,
Mandy
This comment was minimized by the moderator on the site
Czy to żart?
This comment was minimized by the moderator on the site
can we create uniqdata function instead of macro?
This comment was minimized by the moderator on the site
Hi, İlhan,If you like a User Defined Function to create a formula for solving this problem, the below code may help you:After inserting the code, select a list of cells where you want to put the results. Then type this formula:=Uniques(A1:C4)  in the formula bar.Press Ctrl+Shift+Enter keys together. 


Function Uniques(ByVal inputRange As Range)
Dim inputArray As Variant
Dim myColl As New Collection
Dim xVal As Variant
Dim outArray() As Variant
On Error Resume Next
With inputRange
inputArray = Application.Intersect(.Cells, .Parent.UsedRange).Value
End With
On Error GoTo 0
On Error Resume Next
For Each xVal In inputArray
myColl.*** Item:=xVal, Key:=(CStr(xVal) & TypeName(xVal))
Next xVal
myColl.Remove "String"
On Error GoTo 0
ReDim outArray(1 To Application.Max(myColl.Count, Application.Caller.Cells.Count))
For xVal = 1 To UBound(outArray)
outArray(xVal) = vbNullString
Next xVal
For xVal = 1 To Application.Min(myColl.Count, Application.Caller.Cells.Count)
outArray(xVal) = myColl(xVal)
Next xVal
If Application.Caller.Columns.Count = 1 Then
Uniques = Application.Transpose(outArray)
Else
Uniques = outArray
End If
End Function
This comment was minimized by the moderator on the site
Thanks for the code. I'm using the VBA code of this page. Is there a way to add a sorting code after the unique values are extracted so it sorts it automatically?
This comment was minimized by the moderator on the site
Regarding the formula version, could you explain in more detail what this portion is doing? *100+COLUMN($A:$C),7^8)),"R0C00") Specifically, what are the *100, 7^8, and "R0C000" doing? I'm understanding everything else, but I can't figure out what these are for.
This comment was minimized by the moderator on the site
Little late for my response here but...
ROW($2:$9)*100 - this is multiplying the row number *100, so if it's in row 5, now the number is 500
COLUMN($A:$C) - this gets added to the row*100 number, so if it's row 5 col 2, then the number is 502.
7^8)), - this (I think) is to have a max value for the min statement from earlier.
"R0C00") - this formats the text based on the number. In the example, we had 502 so this gives R5C02 (row 5, col 02).

If you have a lot of columns but not many rows, then you could change it to ROW($2:$9)*1000+COLUMN($A:$C),7^8)),"R0C000")
This comment was minimized by the moderator on the site
i've adjusted to my sheet but am only returning the first value in the defined array... what am i missing?
This comment was minimized by the moderator on the site
Hello, Cody,
The above formula works well in my worksheet, could you give a screenshot of your data problem here?
Thank you!
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations