انتقل إلى المحتوى الرئيسي

كيفية استخراج قائمة القيم الفريدة ديناميكيًا من نطاق أعمدة في Excel؟

بالنسبة إلى نطاق العمود الذي تتغير القيم بانتظام ، وتحتاج دائمًا إلى الحصول على جميع القيم الفريدة من النطاق بغض النظر عن كيفية تغييره. كيف تصنع قائمة ديناميكية للقيم الفريدة؟ ستوضح لك هذه المقالة كيفية التعامل معها.

استخرج ديناميكيًا قائمة بالقيم الفريدة من نطاق أعمدة باستخدام الصيغة
استخرج ديناميكيًا قائمة بالقيم الفريدة من نطاق أعمدة برمز VBA


استخرج ديناميكيًا قائمة بالقيم الفريدة من نطاق أعمدة باستخدام الصيغة

كما هو موضح أدناه ، تحتاج إلى استخراج قائمة القيم الفريدة ديناميكيًا من النطاق B2: B9. يرجى تجربة صيغة الصفيف التالية.

1. حدد خلية فارغة مثل D2 ، أدخل الصيغة أدناه واضغط على CTRL + تغير + أدخل مفاتيح في نفس الوقت. (B2: B9 هي بيانات العمود التي تريد استخراج القيم الفريدة ، D1 هي الخلية أعلاه حيث توجد الصيغة الخاصة بك)

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

2. استمر في تحديد الخلية D2 ، ثم اسحب مقبض التعبئة لأسفل للحصول على جميع القيم الفريدة من النطاق المحدد.

الآن يتم استخراج جميع القيم الفريدة في نطاق العمود B2: B9. عندما تتغير القيم في هذا النطاق ، سيتم تغيير قائمة القيم الفريدة ديناميكيًا على الفور.

حدد بسهولة وتمييز جميع القيم الفريدة في نطاق في Excel:

حدد الخلايا الفريدة والمكررة فائدة كوتولس ل إكسيل يمكن أن يساعدك في تحديد وإبراز جميع القيم الفريدة بسهولة (بما في ذلك التكرارات الأولى) أو القيم الفريدة التي تظهر مرة واحدة فقط ، بالإضافة إلى القيم المكررة حسب حاجتك كما هو موضح أدناه.
قم بتنزيل Kutools لبرنامج Excel الآن! (تجربة مجانية لمدة 30 يومًا)


استخرج ديناميكيًا قائمة بالقيم الفريدة من نطاق أعمدة برمز VBA

يمكنك أيضًا استخراج قائمة بالقيم الفريدة ديناميكيًا من نطاق أعمدة برمز VBA التالي.

1. صحافة قديم + F11 مفاتيح في نفس الوقت لفتح ميكروسوفت فيسوال باسيك للتطبيقات نافذة.

2. في ال ميكروسوفت فيسوال باسيك للتطبيقات الإطار، انقر فوق إدراج > وحدة. ثم انسخ والصق رمز VBA أدناه في ملف وحدة نافذة.

رمز فبا: استخراج قائمة من القيم الفريدة من نطاق

Sub CreateUniqueList()
Dim xRng As Range
Dim xLastRow As Long
Dim xLastRow2 As Long
Dim I As Integer
On Error Resume Next
Set xRng = Application.InputBox("Please select range:", "Kutools for Excel", Selection.Address, , , , , 8)
If xRng Is Nothing Then Exit Sub
On Error Resume Next
xRng.Copy Range("D2")
xLastRow = xRng.Rows.Count + 1
ActiveSheet.Range("D2:D" & xLastRow).RemoveDuplicates Columns:=1, Header:=xlNo
xLastRow2 = Cells(Rows.Count, "B").End(xlUp).Row
For I = 1 To xLastRow2
  If ActiveSheet.Range("D2:D" & xLastRow2).Cells(I).Value = "" Then
     ActiveSheet.Range("D2:D" & xLastRow2).Cells(I).Delete
  End If
Next
End Sub

ملاحظات: في الكود ، D2 هي الخلية التي ستحدد فيها قائمة القيم الفريدة. يمكنك تغييره كما تريد.

3. ارجع إلى ورقة العمل ، انقر فوق إدراج > الأشكال > مستطيل. انظر لقطة الشاشة:

4. ارسم مستطيلاً في ورقة العمل الخاصة بك ، ثم أدخل بعض الكلمات التي تريد عرضها عليها. ثم انقر بزر الماوس الأيمن فوقه وحدده تعيين ماكرو من قائمة النقر بزر الماوس الأيمن. في ال تعيين ماكرو في مربع الحوار ، حدد ملف إنشاء قائمة فريدة في ال اسم الماكرو مربع ، ثم انقر فوق OK زر. انظر لقطة الشاشة:

5. انقر الآن على زر المستطيل ، أ كوتولس ل إكسيل ينبثق مربع الحوار ، يرجى تحديد النطاق الذي يحتوي على قيم فريدة تحتاج إلى استخراجها ، ثم انقر فوق OK .

من الآن فصاعدًا ، يمكنك تكرار الخطوة 5 أعلاه لتحديث قائمة القيم الفريدة تلقائيًا.


مقالات ذات صلة:

أفضل أدوات إنتاجية المكتب

الميزات الشعبية: البحث عن التكرارات أو تمييزها أو تحديدها   |  حذف الصفوف الفارغة   |  دمج الأعمدة أو الخلايا دون فقدان البيانات   |   جولة بدون صيغة 
سوبر بحث: معايير متعددة VLookup    VLookup ذات القيمة المتعددة  |   VLookup عبر أوراق متعددة   |   بحث غامض ....
قائمة منسدلة متقدمة: إنشاء القائمة المنسدلة بسرعة   |  القائمة المنسدلة التابعة   |  قائمة منسدلة متعددة التحديد ....
مدير العمود: إضافة عدد محدد من الأعمدة  |  نقل الأعمدة  |  تبديل حالة رؤية الأعمدة المخفية  |  مقارنة النطاقات والأعمدة 
الميزات المميزة: التركيز على الشبكة   |  عرض تصميم   |   شريط الفورمولا الكبير    مدير المصنفات والأوراق   |  مكتبة الموارد (النص السيارات)   |  منتقي التاريخ   |  اجمع أوراق العمل   |  تشفير/فك تشفير الخلايا    إرسال رسائل البريد الإلكتروني عن طريق القائمة   |  سوبر تصفية   |   مرشح خاص (تصفية غامق / مائل / يتوسطه خط ...) ...
أفضل 15 مجموعة أدوات12 نص الأدوات (إضافة نص, إزالة الأحرف، ...)   |   +50 رسم الأنواع (مخطط جانت، ...)   |   40+ عملي الصيغ (احسب العمر على أساس تاريخ الميلاد، ...)   |   19 إدخال الأدوات (أدخل رمز الاستجابة السريعة, إدراج صورة من المسار، ...)   |   12 تحويل الأدوات (أرقام إلى كلمات, نتيجة تحويل عملة، ...)   |   7 دمج وتقسيم الأدوات (الجمع بين الصفوف المتقدمة, تقسيم الخلايا، ...)   |   ... و اكثر

عزز مهاراتك في Excel باستخدام Kutools for Excel، واختبر كفاءة لم يسبق لها مثيل. يقدم Kutools for Excel أكثر من 300 ميزة متقدمة لتعزيز الإنتاجية وتوفير الوقت.  انقر هنا للحصول على الميزة التي تحتاجها أكثر...

علامة تبويب kte 201905


يجلب Office Tab الواجهة المبوبة إلى Office ، ويجعل عملك أسهل بكثير

  • تمكين التحرير والقراءة المبوبة في Word و Excel و PowerPointوالناشر والوصول و Visio والمشروع.
  • فتح وإنشاء مستندات متعددة في علامات تبويب جديدة من نفس النافذة ، بدلاً من النوافذ الجديدة.
  • يزيد من إنتاجيتك بنسبة 50٪ ، ويقلل مئات النقرات بالماوس كل يوم!
Comments (35)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
con este procedimiento de filtro se hace de forma muy rapida

1.EN ESTE EJEMPLO los datos a remover los duplicados estan en la col A de la fila 59 a la 239
2. se define un criterio de filtrado en este caso en la fila d56 el mismo titulo de la lista a remover duplicados y la d57 la dejo en blanco
3. una vez ejecutado se muestran los datos en la fila destino, que en mi caso fue la d59

Range("A59:A239").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range _
("D56:D57"), CopyToRange:=Range("D59"), Unique:=True
This comment was minimized by the moderator on the site
I would like to be able to do this exact same thing, except using two separate column ranges (B2:B9) as well as (D2:D9) is this possible?
This comment was minimized by the moderator on the site
Hi Anthony,
You can place the results in the same column as the original data. Such as column B in this case.
But you need to reference the top cell of the result cell in the formula as follows.
=IFERROR(INDEX($B$2:$B$9, MATCH(0,COUNTIF($B$11:B11, $B$2:$B$9), 0)),"") + Ctrl + Shift + Enter
This comment was minimized by the moderator on the site
Ik heb gemerkt dat de 'formule'-methode erg traag werkt bij grote datasets. Een goed alternatief is het gebruik van een draaitabel. Kies dan alleen de rijlabels, je krijgt dan een lijstje met unieke waarden. Het kan zijn dat je wat extra's krijgt "(leeg)" bijvoorbeeld. Je kunt deze er vervolgens uitfilteren. Helaas kun je maar op 1 criterium filteren. Ook daar zijn wel weer oplossingen voor, maar dat is wat complexer.
This comment was minimized by the moderator on the site
how to make the vba code work for a range where another formula was used?on column B I have a formula, referring to columns D and E.
If I use apply the code to column L (let's say), (obviously, properly modifying the cells in the code) the macro returns the formula applied to columns M and N... It works, then, but not as I want!How to keep the values in column B?thanks
This comment was minimized by the moderator on the site
thank you very much
This comment was minimized by the moderator on the site
I try the VBA Code and the formula. The code VBA is working very well but I can't keep a file with macro. But th problem is that I can't make the formula working. Did anybody have an idea ? Thank you
This comment was minimized by the moderator on the site
Hi Charlotte,
Thank you for your comment. You can keep the file with macro for future use by saving the workbook as an Excel Macro-Enabled Workbook.
For the formula problem, would you please provide a screenshot of your data? Thank you for your comment.
This comment was minimized by the moderator on the site
I'm using that =IFERROR(INDEX($B$2:$B$9, MATCH(0,COUNTIF($D$1:D1, $B$2:$B$9), 0)),"") formula which is great for one column but my data is spread across a range of columns and rows. Can I edit the formula to include the whole area? My data lives from AC4 to AR60...
This comment was minimized by the moderator on the site
Hi, thank you for your help.
Now, how can I have my values also sorted alphabetically? (I do not want to use the filter on my master table)
Should I use a COUNTIFS instead of COUNTIF?
Please HELP
This comment was minimized by the moderator on the site
Hi Alexis,
Sorry can't hep to sort the extracted value alphabetically at the same time with formula. Thank you for your comment.
This comment was minimized by the moderator on the site
I am trying to drag the formula down past my actual data so that I can input different sized data sets and not have to adjust anything. However, the last row after my actual data ends always returns a "0". I am using the unique values for something else in an adjacent column, and the 0 causes the last value to repeated (When I delete the 0 the value is no longer repeated). Any idea how to fix this? Also I am using Office 365 Business
This comment was minimized by the moderator on the site
If I do this for a thousand row excel sheet on the latest version of Excel on a Mac, it never returns. The first row works, but when I duplicate down, excel goes into a compute mode that has not returned values for over two hours now.

Any thoughts on how to do this for large lists (up to 2k rows) that will return 50 or 60 unique values?

I mocked this up in the "Numbers" app, and it's working perfectly there, taking only a couple minutes to calculate. It's just taking so long in Excel that I wonder if it will ever complete. I plan on letting it "run" overnight to see what will happen.
This comment was minimized by the moderator on the site
Check your Calculating options. It needs to be set to automatic. File > Options > Formulas > Calculating options > Workbook Calculation (Automatic selection)
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