PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آوردن از چندين شيت در يك شيت



karbar
2012/04/24, 11:33
يك فايل اكسل دارم كه در چندين شيت (مثلا بالاي 100 شيت) در هر شيت مشخصات يك نفر مثلا نام و نام خانوادگي و ... وجود دارد
فرمولي مي خواهم كه در يك شيت همه اينها كنار هم بيايد

ضمنا اگر مثلا با استفاده از مثلا ='sheet1'!F6 بخواهم از شيت ها كپي كنم
بايد بيش از صد مرتبه در اين عبارت هم شماره شيت را تغيير دهم و هم شماره سلول را

فرمولي مي خواهم كه از تكرار اين تغيير دادن زياد جلو گيري شود
با تشكر

s.cheraghi
2012/04/24, 20:57
سلام
ی فایل براتون فرستادم
با VB نوشتم
اگه منظورتون همینه فایلتون برام بفرستین تا کدش براتون کامل کنم

http://s3.picofile.com/file/7363949351/training.xlsm.html

Javid Mokhtari
2012/04/25, 21:28
با سلام.
فایل نمونه لطفاً.%

karbar
2012/04/26, 10:36
دوستان ضمن تشکر از لطف شما
جواب من در پاسخ s.cheraghi موجود بود که برای فایل مورد نظر تغییرش دادم و حالا سوالم اینست که در ماکرو زیر چطور میتونیم 10 خط مشابه رو با یک شرط بنویسیم که از تکرار این خطوط هم جلوگیری بشه؟
Sub assas()
For i = 2 To Application.Sheets.Count

Sheets("sheet1").Range("a1").Offset(i - 1, 0) = i

Sheets("sheet1").Range("b1").Offset(i - 1, 0) = Sheets(i).Range("a1").Value
Sheets("sheet1").Range("b1").Offset(i - 1, 1) = Sheets(i).Range("b1").Value
Sheets("sheet1").Range("b1").Offset(i - 1, 2) = Sheets(i).Range("c1").Value
Sheets("sheet1").Range("b1").Offset(i - 1, 3) = Sheets(i).Range("d1").Value
Sheets("sheet1").Range("b1").Offset(i - 1, 4) = Sheets(i).Range("e1").Value
Sheets("sheet1").Range("b1").Offset(i - 1, 5) = Sheets(i).Range("f1").Value
Sheets("sheet1").Range("b1").Offset(i - 1, 6) = Sheets(i).Range("g1").Value
Sheets("sheet1").Range("b1").Offset(i - 1, 7) = Sheets(i).Range("h1").Value
Sheets("sheet1").Range("b1").Offset(i - 1, 8) = Sheets(i).Range("i1").Value
Sheets("sheet1").Range("b1").Offset(i - 1, 9) = Sheets(i).Range("j1").Value

Next i
End Sub

s.cheraghi
2012/04/26, 14:09
با سلام
لازم به ذکر است هدف از کاهش تعداد سطرهای نوشته شده متعدد می باشد:
1- کاهش زمان اجرای برنامه
2- افزایش خوانایی و درک بهتر کدهای نوشته شده

کاهش تعداد سطرهای نوشته شده در هر کد الزاما پیچیدگی زمان حل برنامه را به اندازه چشمگیر کاهش نمی دهد
عواملی که باعث افزایش پیچیدگی زمانی در برنامه ها می شود، حلقه هایی مثل For،While... می باشد.
که در صورت کاهش این حلقه ها کمک شایانی در کاهش زمان مصرف شده خواهد شد

اما تلاتش جهت تبدیل چندین سطر به سطرهای کمتر جهت یادگیری بسیار مفید می باشد.

هدف کد شما این بوده که سطرهای اول در Sheet های دیگر را در Sheet1 و در جلوی شماره نوشته شده در Sheet1 بنویسید
جهت کاهش کد شما از لحاظ اندازه می توان از کد زیر استفاده کرد:


Sub saman()

Sheet1.Cells.ClearContents
For i = 2 To Application.Sheets.Count

Sheet1.Range("a1").Offset(i - 1, 0) = i
Sheets(i).UsedRange.Copy Destination:=Sheet1.Range("b1").Offset(i - 1, 0)

Next i

End Sub

در صورت سوال در خدمت هستم

karbar
2012/04/28, 18:42
ضمن تشكر از شما
نمونه فايل مورد نظر:
http://hamandishinews.com/links/artforms-2012-04-28-macro.xls
مي خواهيم محتواي ستون F5 تا F17 همه شيت ها در يك جدول بيايد

- يك مشكل اين است كه نام شيت ها فارسي است
- مسئله ديگر اين است كه مثلا در شيت دوم چون اطلاعاتش كامل وارد نشده، اطلاعاتش يك فيلد كمتر از شيت اول است، اما مي خواهيم محتواي هر فيلد در ستون متناظر خودش بيايد يعني محتواي همه ARTF_MULTI_JUSERNAME ها در ستون 16 بيايد

s.cheraghi
2012/04/28, 19:14
با سلام
متأسفانه لینک مورد نظر خراب می باشد
اصلاح بفرمائید
ممنون

karbar
2012/04/29, 09:38
متأسفانه لینک مورد نظر ---اب می باشد


همان لينك اصلاح شد
با تشكر

s.cheraghi
2012/04/29, 13:35
با سلام

یک فایل براتون درست کردم
با وی بی نوشته شده
امیدوارم مشکلتون حل بشه
در صورت سوال در خدمتتون هستم

report (http://s3.picofile.com/file/7367994187/report.xlsm.html)

karbar
2012/04/29, 14:02
با سلام

یک فایل براتون درست کردم

report (http://s3.picofile.com/file/7367994187/report.xlsm.html)


فايل با حجم صفر بايت دانلود ميشود

s.cheraghi
2012/04/29, 16:31
لینک اصلاحی

Report (http://s3.picofile.com/file/7368184408/report.xlsm.html)