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

مساعدة في طلب استدعاء بيانات


إذهب إلى أفضل إجابة Solved by lionheart,

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

مرفق ملف اكسل يحتوي على 3 ورقات عمل المطلوب معادلة أو كود في الورقة الثالثة التي تحمل اسم (طلبات) لاستدعاء بيانات مجمعة كما هو واضح في الملف المرفق وجزاكم الله عنا كل خير

انتبه من فضلك .. فطالما تريد الحل بالأكواد ..فلابد من رفع الملف بإمتداد يقبل الأكواد XLSM ... تـــم تعديل رفع الملف

test.xlsm

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

  • أفضل إجابة

Using formulas

-------------------

Column F Formula

=TEXTJOIN("-",TRUE,IF(الحركة!$A$2:$A$10=A2,الحركة!$F$2:$F$10,""))

Column G Formula

=IFERROR(LOOKUP(2,1/(الحركة!$A$2:$A$10=A2),الحركة!$J$2:$J$10),"")

 

Using VBA

--------------

Sub Test()
    Dim ws As Worksheet, sh As Worksheet, rng As Range, n As Long, r As Long
    Set ws = ThisWorkbook.Worksheets(2)
    Set sh = ThisWorkbook.Worksheets(3)
    Set rng = ws.Range("A2:A" & ws.Cells(Rows.Count, 1).End(xlUp).Row)
    n = sh.Cells(Rows.Count, 1).End(xlUp).Row
    For r = 2 To n
        sh.Cells(r, 6).Value = MyVLOOKUP(sh.Cells(r, 1).Value, rng, 6, "-")
        sh.Cells(r, 7).Value = LookupLast(sh.Cells(r, 1).Value, rng, 10)
    Next r
End Sub

Function MyVLOOKUP(ByVal myVal, ByVal rng As Range, ByVal colRef As Long, ByVal myStr As String)
    If Not IsNumeric(myVal) Then myVal = Chr(34) & myVal & Chr(34)
    With rng
        MyVLOOKUP = Join(Filter(.Parent.Evaluate("TRANSPOSE(IF(" & .Columns(1).Address & "=" & myVal & "," & .Columns(colRef).Address & "))"), False, 0), myStr)
    End With
End Function

Function LookupLast(ByVal txt As String, ByVal rng As Range, ByVal col As Integer)
    Dim i As Long
    For i = rng.Columns(1).Cells.Count To 1 Step -1
        If txt = rng.Cells(i, 1) Then LookupLast = rng.Cells(i, col): Exit Function
    Next i
End Function

 

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

شكرا لك أخي قلب الأسد بالفعل نجحت بتوفير المطلوب بواسطة VBA لكن بالمعادلات عند تطبيق المعادلة الأولى لاستدعاء التواريخ يتم استدعاء كل التواريخ المسجلة بغض النظر عن الرقم المدون في خانة الكود والمعادلة الثانية تعمل جيدا وتستدعي آخر حالة لآخر تاريخ مدون مقابل الكود.

هل لابد من وضع زر لتنفيذ الvba ام هناك طريقة اخرى لكي يعمل الvba بمجرد كتابة رقم الكود فقط ؟

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

I think your office version doesn't support TextJoin function so you can use UDF that is alternative to TextJoin. You will use the same formula exactly but replace the name of TextJoin with MyTextJoin

Function MyTextJoin(break As String, ignore As Boolean, txt) As String
    Dim t, s$, i%
    For Each t In txt
        s = s & IIf(i = 0 Or (ignore = True And (s = "" Or t = "")), "", break) & t
        i = 1
    Next t
    MyTextJoin = s
End Function

 

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

شكرا للأمانة العلمية في نقل المعادلة المستخدمة هنا منذ أكثر من أربعة أعوام بدون ذكر صاحبها

حينما قال صاحب الاستفسار أن المعادلة الأولى لم تعمل قمت بالرد في موضوعي بدائل دالة textjoin حتى يظهر له الحل بطريقة غير مباشرة

بالتوفيق 

🙄😏

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

ما شاء اللّه الأمانة العلمية متوفرة جدا

ولكن الحمد لله رغم تأخر نشري لهذا المجهود لي السبق

موضوع منتدى الصقر : الدالة المعرفة JoinEA بديل للدالة TEXTJOIN بتاريخ 18-08-2018 10:05 مساء

وموضوعي: مكتبة الموقع - بدائل دالة textjoin الموجودة في إكسل 2016 لجميع إصدارات اكسل mastextjoin بواسطة أ / محمد صالح, يناير 26, 2018

ربنا يصلح حالنا جميعا

  • 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