اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

  • تمت الإجابة
قام بنشر

جرب هذا الكود

Option Explicit

Sub get_Prof_names()
  Dim sh As Worksheet, Rg As Range
  Dim i%, Yer%
  Dim Salim As Object
  
  Set Salim = CreateObject("Scripting.Dictionary")
  Set sh = Sheets("sheet1")
  Set Rg = sh.Range("G3").CurrentRegion
 
 If Rg.Rows.Count > 1 Then _
    Rg.Offset(1).Resize(Rg.Rows.Count - 1).Clear
 
 Yer = sh.Range("G1"): i = 2
 
 Do Until sh.Cells(i, 1) = vbNullString
      If Year(Cells(i, 2)) = Yer Then
        Salim(Cells(i, 1).Value) = vbNullString
      End If
  i = i + 1
 Loop
 If Salim.Count Then
    With sh.Range("G4").Resize(Salim.Count)
      .Value = Application.Transpose(Salim.Keys)
      .Borders.LineStyle = 1
      .Font.Bold = True: .Font.Size = 16
      .InsertIndent 1: .Interior.ColorIndex = 35
    End With
 End If
End Sub

الملف مرفق

 

Prof_names.xlsm

  • Like 2
  • Thanks 2
قام بنشر

ممتازة منك صديقي رائد (لكنها تدرج المكرر في حال وجوده)

هذه معادلة احرى (بردو تدرج المكرر في حال وجوده)

(سبق وان قلت ان استعمال الدالة  IFERROR ) يفضل عدم استعمالها

=IF(ROWS($A$1:A1)>SUMPRODUCT(--(YEAR($B$2:$B$50)=$G$1)),"",INDEX($A$2:$A$50,SMALL(IF($A$2:$A$50<>"",IF(YEAR($B$2:$B$50)=$G$1,ROW($A$2:$A$50)-ROW($A$2)+1)),ROWS($A$1:A1))))

اذا لم نتعمل معك استبدل الفاصلة "," بفاصلة منقوطة ";" مع (Ctrl+Shift+Enter)

Prof_names.xlsm

 

 

  • Like 1
  • Thanks 2

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information