PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : اعمال کلید های ctrl+shift+enter در ماکرو



ZAMEN58
2016/08/25, 19:15
سلام
لطفا کد لازم برای اینکه فرمول زیر رو توی سلولی قرار بدیم و کلید های CTRL+SHIFT+ENTER اعمال بشه را بنویسید
=SMALL(IF(MAIN!$A$1:$G$46=Variz!C1;ROW(MAIN!$A$1:$ G$46);"");1)

iranweld
2016/08/25, 20:46
نمونه فایل را با توضیح خواسته خود ضمیمه پست کنید مسلما با ماکرو راه ساده تری وجود دارد

ZAMEN58
2016/08/25, 22:38
سلام
اگه برای دستور ستون E دستور VBA سراغ دارید بگذارید چون شماره سطر $C$ تغییر میکنه
=SMALL(IF(MAIN!$A$2:$C$11=Variz!C1;ROW(MAIN!$A$2:$ C$11);"");1)
ممنون

amir_ts
2016/08/25, 23:31
با سلام
فایل نمونه را ملاحظه کنید.

iranweld
2016/08/27, 10:39
با سلام

فایل پیوست را ملاحظه کنید


Sub Import()

Application.ScreenUpdating = False

z1 = Sheets("MAIN").Cells(Sheets("MAIN").Rows.Count, "B").End(xlUp).Row

Z2 = Sheets("VARIZ").Cells(Sheets("Variz").Rows.Count, "B").End(xlUp).Row

Sheets("VARIZ").Range("E1:F" & Z2).ClearContents

For I = 1 To Z2

For J = 1 To z1

If Val(Sheets("MAIN").Range("C" & J)) = Val(Sheets("Variz").Range("C" & I)) Then

Sheets("variz").Range("E" & I) = Sheets("MAIN").Range("C" & J).Row

Sheets("variz").Range("F" & I) = Sheets("MAIN").Range("B" & J)

Exit For

Else


Sheets("MAIN").Range("E" & I) = ""

End If

Next

Next

Application.ScreenUpdating = True


End Sub

ZAMEN58
2016/08/27, 21:07
سلام امیر جان
ممنون از جوابتون
دو تا سؤال:
چرا وقتی محدوده رفرنس زیادتر از یه ستون میشه کار نمیکنه
اگه مقادیر پیدا شده در ستون e بیشتر از یکی شد چطور میشه اون دو تا عدد را با هم جمع کرد؟
باز هم ممنون

amir_ts
2016/08/27, 23:23
با سلام


چرا وقتی محدوده رفرنس زیادتر از یه ستون میشه کار نمیکنه
چون از تابع match استفاده کردم .اگر با دو ستون میخواهید مقایسه بشه با کمی تغییر از کد های جناب آقای iranweld (http://forum.exceliran.com/member.php/23192-iranweld) استفاده کنید.



For i = 1 To Z2

For j = 1 To z1

If Val(Sheets("Variz").Range("C" & i)) = Val(Sheets("MAIN").Range("C" & j)) Then

Sheets("variz").Range("E" & i) = Sheets("MAIN").Range("C" & j).Row

ElseIf Val(Sheets("Variz").Range("C" & i)) = Val(Sheets("MAIN").Range("d" & j)) Then
Sheets("variz").Range("E" & i) = Sheets("MAIN").Range("C" & j).Row
End If
Next j
Next i



قسمت دوم سوال رو هم متوجه نشدم.یک مثال بزنید شاید با توابع اکسل به سادگی انجام بشه.

ZAMEN58
2016/08/28, 22:51
سلام
ببینید فرض کنید ستون a شامل یکسری کد باشه و ستون b هم یکسری عدد
حالا اگه توی ستون a یه کد دوبار تکرار شده باشه یعنی مثلا یه مشتری دو تا پرداخت داشته باشه
چطوری میشه اعداد متناظر اون رو توی ستون b با هم جمع کرد و کد تکراری را حذف کرد
ممنون

amir_ts
2016/08/29, 13:21
ببینید فرض کنید ستون a شامل یکسری کد باشه و ستون b هم یکسری عدد
حالا اگه توی ستون a یه کد دوبار تکرار شده باشه یعنی مثلا یه مشتری دو تا پرداخت داشته باشه
چطوری میشه اعداد متناظر اون رو توی ستون b با هم جمع کرد و کد تکراری را حذف کرد



با سلام
کد زیر رو امتحان کنید براساس تکراری های ستون a مجموع ستون c بدست آمده و تکراری ها حذف میشود.





Sub test()
Dim lr, i, sval As Integer


lr = Sheet4.Cells(Sheet4.Rows.Count, "A").End(xlUp).Row


For i = 2 To lr


sval = Application.SumIf(Range("A2:A" & lr), Range("a" & i), Range("C2:C" & lr))
Range("D" & i) = sval
Next i


On Error Resume Next
Columns("A:D").Select
ActiveSheet.Range("$A$1:$D$" & lr).RemoveDuplicates Columns:=Array(1), _
Header:=xlNo
Range("a1").Select


End Sub