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

استدعاء قيم فريده من ثلاث صفحات بشرط(معادلات او كود)


إذهب إلى أفضل إجابة Solved by سليم حاصبيا,

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

السلام عليكم

كيف احصل على قيم فريده من ثلاث صفحات

صفحه1-2-3 القيم المطلوبه اسم البند

ولكن بشرط اسم المورد اى قيم التى تقابل اسم المورد من ثلاث صفحات

قيم فريده بشرط.xlsx

رابط هذا التعليق
شارك

جرب هذا الماكرو

Option Explicit

Sub Uniq_items()
  Dim R As Worksheet, Sw As Worksheet
  Dim Nme$, Rg As Range
  Dim cop_rg As Range
  Dim dic As Object, I%, m%
  
  Set R = Sheets("report")
  Set dic = CreateObject("Scripting.Dictionary")
  Set cop_rg = R.Range("B4").CurrentRegion
Nme = R.Range("C2")
If cop_rg.Rows.Count > 1 Then
cop_rg.Offset(1).ClearContents
End If
m = 5
For Each Sw In Sheets
 If Sw.Name <> R.Name Then
  Set Rg = Sw.Range("G5", Sw.Range("G4").End(4))
  For I = 1 To Rg.Rows.Count
   If Rg.Cells(I).Offset(, 2) = Nme Then
    dic(Rg.Cells(I).Value) = _
    Rg.Cells(I).Offset(, 2).Value
   End If
 Next
 If dic.Count = 0 Then GoTo Next_Sheet
    With R.Cells(m, 2).Resize(dic.Count)
     .Value = Application.Transpose(dic.keys)
     .Offset(, 1) = Application.Transpose(dic.items)
      m = m + dic.Count: dic.RemoveAll
    End With
 End If
Next_Sheet:
 Next Sw
End Sub

الملف مرفق

Unique_item.xlsm

  • Like 3
رابط هذا التعليق
شارك

  • أفضل إجابة

تعديل بسيط على الماكرو ليظهر اسماء الشيتات

Sub Uniq_items_With_Sh_Names()
  Dim R As Worksheet, Sw As Worksheet
  Dim Nme$, Rg As Range
  Dim cop_rg As Range
  Dim dic As Object, I%, m%
  Dim arr(), ky, t%
  Set R = Sheets("report")
  Set dic = CreateObject("Scripting.Dictionary")
  Set cop_rg = Range("B4").CurrentRegion
Nme = R.Range("C2")
If cop_rg.Rows.Count > 1 Then
cop_rg.Offset(1).ClearContents
End If
m = 5
For Each Sw In Sheets
 If Sw.Name <> R.Name Then
  Set Rg = Sw.Range("G5", Sw.Range("G4").End(4))
  For I = 1 To Rg.Rows.Count
   If Rg.Cells(I).Offset(, 2) = Nme Then
    dic(Rg.Cells(I).Value) = _
    Rg.Cells(I).Offset(, 2).Value
   End If
  Next
 If dic.Count = 0 Then GoTo Next_Sheet
  For Each ky In dic.keys
    ReDim Preserve arr(t)
      If t = 0 Then
        arr(t) = dic(ky) & ": Sheet " & Sw.Name
      Else
        arr(t) = dic(ky)
      End If
    t = t + 1
   Next

    With R.Cells(m, 2).Resize(dic.Count)
     .Value = Application.Transpose(dic.keys)
     .Offset(, 1) = Application.Transpose(arr)
      m = m + dic.Count: dic.RemoveAll: Erase arr: t = 0
    End With
 End If
Next_Sheet:
 Next Sw
End Sub

الملف من جديد

Unique_item_1.xlsm

  • Like 2
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information