توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : [حل شده] سوال در مورد تهیه گزارش از یک سری تراکنش با vba
daryushm
2016/01/04, 16:04
میخوام تو اکسلی که ضمیمه هست، اطلاعات شیت اول رو بگیره و شیت دوم رو بسازه!
ممنون میشم کمکم کنید...
10014
Ali Parsaei
2016/01/04, 20:20
سلام،
حرف "ی" که در فايلتان استفاده کرده ايد در VBA مشکل ساز خواهد شد، براي همين من سعي کردم در کدنويسي ام از اون حرف استفاده نکنم و به خانه هاي خود فايل کد را ارجاع دهم، بنابراين شما اول در شيت گزارش خانه B1 عبارت: "حجم خريد" را به: "خريد" تغيير دهيد بعد مي توانيد از کد زير براي ستون مربوطه استفاده کنيد:
Sub Macro1()
Dim C As Range
Dim J As Integer
Dim I As Integer
J = 0
I = 2
Do While I < 100
For Each C In Sheets("transactions").Range("B2:B100")
If C.Value = Sheets("گزارش").Cells(I, 1).Value And C.Offset(0, 1).Value = Sheets("گزارش").Range("B1").Value Then
J = J + C.Offset(0, 2).Value
Sheets("گزارش").Cells(I, 1).Offset(0, 1).Value = J
End If
Next
J = 0
I = I + 1
Loop
End Sub
براي فروش هم مي توانيد از همين کد الگو بگيريد و با تغيير آن به مقصود خود برسيد. البته کد فوق فقط جهت 100 رديف تنظيم شده
iranweld
2016/01/04, 22:15
با سلام
این هم ماکرویی که یک لیست بدون تکرار در شیت گزارش ایجاد مینماید
Sub TEST()
Dim N As Integer
Dim RNG, CEL As Range
K1 = Sheets("TRANSACTIONS").Cells(Sheets("TRANSACTIONS").Rows.Count, "B").End(xlUp).Row
K2 = Sheets("گزارش").Cells(Sheets("گزارش").Rows.Count, "B").End(xlUp).Row
Range("A2:A" & K2).ClearContents
N = 2
K = 2
Set RNG = Sheets("TRANSACTIONS").Range("B2:B" & K1)
For Each CEL In RNG
If WorksheetFunction.CountIf(Sheet3.Range(Sheet3.Cell s(2, 2), Sheet3.Cells(N, 2)), Sheet3.Cells(N, 2)) = 1 Then
Sheets("گزارش").Range("A" & K).Value = CEL
K = K + 1
End If
N = N + 1
Next
End Sub
iranweld
2016/01/04, 23:00
در فایل پیوست چنین مشکلی ندارد احتمالا کدها را داخل یک Module کپی نکردید
یا در ابتدای این سطر از ماکرو نام شیت گزارش را اضافه کنید
Range("A2:A" & K2).ClearContents
sheets("گزارش").Range("A2:A" & K2).ClearContents
iranweld
2016/01/05, 09:47
با سلام
در شیت اول برای ستون کالا ، خرید و فروش ، تعداد نام دینامیک تعریف گردید و در vb برای sumifs از آن استفاده گردید
WorksheetFunction.SumIfs([tedad], [kala], Sheet1.Range("a" & K), [kharid_forosh], Sheet1.Range("b1"))
10024
Sub TEST()
Dim N As Integer
Dim RNG, CEL As Range
K1 = Sheet3.Cells(Sheet3.Rows.Count, "B").End(xlUp).Row
K2 = Sheet1.Cells(Sheet1.Rows.Count, "B").End(xlUp).Row
Sheet1.Range("A2:c" & K2).ClearContents
N = 2
K = 2
Set RNG = Sheet3.Range("B2:B" & K1)
For Each CEL In RNG
If WorksheetFunction.CountIf(Sheet3.Range(Sheet3.Cell s(2, 2), Sheet3.Cells(N, 2)), Sheet3.Cells(N, 2)) = 1 Then
Sheet1.Range("A" & K).Value = CEL
Sheet1.Range("b" & K).Value = WorksheetFunction.SumIfs([tedad], [kala], Sheet1.Range("a" & K), [kharid_forosh], Sheet1.Range("b1"))
Sheet1.Range("c" & K).Value = WorksheetFunction.SumIfs([tedad], [kala], Sheet1.Range("a" & K), [kharid_forosh], Sheet1.Range("c1"))
K = K + 1
End If
N = N + 1
Next
End Sub
iranweld
2016/01/07, 08:48
راهی هست که اگر اولین تراکنش مربوط به یک کالا "فروش" باشه یک پیغام در msgbox بده؟؟؟؟؟؟!!!!!!
در صورتیکه تاریخ ها در شیت مبدا به ترتیب باشد ، در شیت مقصد مورد خواسته شده ایجاد شد
If CEL.Offset(, 1).Value = "فروش" Then
Sheet1.Range("e" & K).Value = "اولین تراکنش فروش"
End If
vBulletin® v4.2.5, Copyright ©2000-2024, Jelsoft Enterprises Ltd.