جرب هذا الكود (استبدل اسم الورقة الى Data لسهولة التعامل مع اللفة الاحنبية)
Option Explicit
Option Base 1
Sub Numeration()
Dim sh As Worksheet
Dim arr()
Dim lr%, k%, x%
k = 1
Set sh = Sheets("Data")
With sh
lr = .Cells(Rows.Count, 4).End(3).Row
.Range("c2:c" & lr).ClearContents
For x = 2 To lr
If Application.CountIf(.Range("d2" & ":d" & x), .Range("d" & x)) = 1 Then
ReDim Preserve arr(1 To k): arr(k) = .Range("d" & x): k = k + 1
End If
Next
For k = 2 To lr
.Range("c" & k) = Application.Match(.Range("d" & k), arr, 0)
Next
End With
Erase arr
End Sub
الملف مرفق
2مثال سليم.rar
لا حاجة للكود تكفي معادلة واحدة توضع في الخلية E2 وتسحب نزولاً
(هذا اذا كنت قد فهمت السؤال جيداً)
في حال الحطأ ارفع ملفاً يحتوي نموذجاً عن النتائج المتوقعة
=IFERROR(IF(ROWS($E$1:E2)>COUNTA(D:D),"",IF(COUNTIF($D$2:D2,D2)=1,MAX($E$1:E1)+1,INDEX($E$1:$E1,MATCH(D2,$D$1:$D1,0)))),"")
الملف مرفق
مثال سليم.rar
العمر لا يكتب رقما هكذا
ولكنه يستخرج بمعادلة بين تاريخين ( تاريخ الولادة و تاريخ اليوم )
فالمعادلة مثل هذه :
=Round(DateDiff("d";[Dateage];Date())/360;1)
رقم 1 في آخر المعادلة من اجل اظهار رقم عشري واحد ويمكنك تغييره الى 2 او جعله صفرا اذا اردت الناتج رقما صحيحا
بهذه الطريقة يتجدد العمر آليا
اذا المشكلة تكون بالآتي
يوجد نسخة اوفيس تحتوي على كامل التحديثات والأخرى لم يتم تحديثها
استخدم نفس النسخة من الاوفيس على الجهازين وقم بتحديث الوندوز
وستحل المشكلة بإذن لله
السلام عليكم
انا عملت لك سابقا في جدول Transaction امكانية ضم العمليات كلها تحت معرف موحد ولكني رأيتك غيرت الجدول تماما
الآن استاذ ركز معي جيدا :
جرب تقسم العملية على جدولين :
واحد للمشتريات ومردود المشتريات والاخراج ومردود الاخراج
والثاني لبيع المنتجات والمرتجع منها والصيانة
جدول رأس فاتورة واحد للمشتريات والمبيعات ( بغض النظر عن النماذج ) يربط بعلاقة مع الجدولين السابقين
كذا يمكنك اظهار كشف الحساب في استعلام بكل يسر وسهولة وبدون استعلامات توحيد او الحاق
يمكن استعمال هذه الدّالة
Option Explicit
Function salim_if(rg As Range)
salim_if = IIf(rg = 1, "ناجح", IIf(rg = 2, "راسب", ""))
End Function
انظر الى المرفق
Boook_IIf.rar
السلام عليكم
والآن مع آخر النقطة عندك
الثانية
بالمرفق الزر الأصفر يقوم بعمل ذلك بالشروط التالية
أن يكون الملفين في نفس المجلد
أن يكون أسماء الشيتات المراد نقلها متطابقة وكلها تبدأ بـكلمة Data
أن الترحيل سيكون في آخر الشيت الذي يحمل نفس الإسم من الملف الأول يعني لو أن Data1 كلن به 2000 سطر ثم Data1 من المملف الثاني به 40 سطر بيانات (بغض النظر عن سطر العناوين الأول) ، فسيكون النتيجة النهائية 2040 سطر
لايشمل الكود فرز إذا كانت البيانات مكررة (يعني لو ضغطت علي الزر مرتين فسيتكرر بيانات ورقات الملف الثاني في آواخر ورقات الملف الأول)
الكود هو
Sub Macro2()
On Error Resume Next
Nm = ActiveWorkbook.Name
pt = ActiveWorkbook.Path
Workbooks.Open Filename:=pt & "\Test2.xlsx"
Nm2 = ActiveWorkbook.Name
For i = 1 To 3
Workbooks(Nm2).Activate
sht = "Data" & i
Sheets(sht).Select
Range("A2:X" & [A9999].End(xlUp).Row).Copy
Workbooks(Nm).Activate
Sheets(sht).Visible = True
Sheets(sht).Select
[A9999].End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues
Sheets(sht).Visible = Hidden
Next i
End Sub
الجزء الأخير من السؤال
نفس الإجابة بالسؤال الأول
فقط عليك الإستمرار في التسمية بعد Data3 مثلا : Data4 , Data5 , Data6 , Data7 , Data8 , Data9 , ، ... إلي مايكفيك مثلا 20
ثم تغير السطر بالكود
من
For i = 1 To 3
إلي
For i = 1 To
20
تفضل الملف وبه الكود الأول والكود الثاني
Test1.rar