TOP

تسلسل النص في الخلايا حسب الشرط (CONCATIF)

وصف

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

يمكن لـ Excel أن يزودنا فقط بوظيفة CONCATENATE البسيطة، ولكنك ستحتاج إلى تحديد الخلايا الضرورية يدويًا. ولتبسيط العمل، نحتاج إلى أتمتة عملية دمج النص من خلايا مختلفة وفقًا للحالة. لذلك، إذا كنت بحاجة إلى "تسلسل" النص بسرعة من خلايا مختلفة باستخدام شرط IF، فيجب عليك كتابة وظيفتك الخاصة.


جدول القروض المضمونة:

VBA كود الدالة CONCATIF

لذلك، دعونا ننشئ دالتنا الخاصة ونسميها CONCATIF. للقيام بذلك، افتح القائمة Service - Macros - Visual Basic Editor, أدخل وحدة VBA (القائمة Insert - Module) وانسخ نص هذه الوظيفة هناك:

Function CONCATIF(Table As Range, SearchValue As Variant, Table2 As Range)
	'moonexcel.com.ua
	Dim i As Integer
	
	For i = 1 To Table.Rows.Count
		If Table.Cells(i, 1) = SearchValue Then
			If Not IsEmpty(Table2.Cells(i, 1).Value) Then
			    CONCATIF = CONCATIF & Table2.Cells(i, 1).Value & "; "
			End If
		End If
	Next i
	
	CONCATIF = Left(CONCATIF, Len(CONCATIF) - 2)
End Function

أغلق Visual Basic Editor ثم عد إلى Excel.

الآن، في Function wizard في الفئة User ified يمكنك العثور على وظيفة CONCATIF واستخدامها. بناء جملة هذه الوظيفة كما يلي:

=CONCATIF (القيم التي تم البحث عنها column; القيمة التي تم البحث عنها; عمود البيانات للجمع بين)

ستكون لدينا النتيجة التالية:

وأخيرًا، تحتاج إلى قفل النطاقات A2:A10 و C2:C10 بعلامة الدولار ($) بحيث لا تنتقل النطاقات إلى الأسفل عند نسخ وظيفة.

مقالات حول الموضوع:

  • ربط النص من خلايا مختلفة (CONCATENATE)
  • تقسيم النص إلى عدة أعمدة
  • تقسيم النص تلقائيًا حسب الفاصل المحدد (SPLITUP)
  • تحديد جزء من الحروف من النص (LEFT, RIGHT, MID)