ايران ويج

نسخه‌ی کامل: جستجو مقدار مورد نظر در Cellهای رنج تعریف شده و دریافت نشانی Cellهای آن
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
1. آیا در Cellهای رنج تعریف شده می‌توان چیزی را جستجو کرد و در جواب نشانی Cellهایی را که آن مقدار در آن‌ها هست گرفت؟
همانند کاری که در روی شیت با ابزار Find و Find All می‌توان کرد؟
2. در VBA امکان این هست که در یک آرایه تعریف شده جستجو کرد و ایندکس خانه‌های آرایه را که آن چیز در آن است گرفت؟
۱ - با تابع find میشه
http://msdn.microsoft.com/en-us/library/...15%29.aspx

۲ - باید کل آرایه رو یکی یکی با مقداری که دنبالشید مقایسه کنید..
درباره آرایه متوجه شدم باید لوپ گذاشت و با شرط درآورد. البته هنوز نمی دونم که با VBA چطور میشه تکست رو شکافت و مثلا بهش گفت که اگر این نوشته بخشی از مقادیر به دست آمده بود هم بده یا نده.
الآن مشکل من با آرایه ست:
ظاهرا با متد find هم میشه find کرد و هم replace. ولی هرکاری می‌کنم درک نمی‌کنم چطور کار می‌کنه هنوز نتونستم یک بار درست اجراش کنم.
نمی‌فهم که چه نوع مقداری پس می‌ده؟ و اینکه یکی‌یکی پس می‌ده یعنی باید با لوپ ازش گرفت یا آرایه یا رنج پس می‌ده و اگر رنج پس می‌ده مقادیر چطور درش نوشته شده ...
می‌خواستم خواهش کنم یه توضیحی درباره‌ش بهم بدین که کمک کنه.
خب نوشته که:
نقل قول:
Return Value

A Range object that represents the first cell where that information is found.

یک آبجکت رنج برمیگردونه.. از اولین خونه‌ای که find کرد
یعنی چطوری میشه مقدارش رو گرفت؟ چون اونطور که من فهمیده‌ام رنج بخشی از روی شیته و این یعنی باید نشانی داشته باشه مثلا A1 یا A1:C5. اینجا چطوری میشه؟
و این مشکل که این رنج کجای شیته و شکل ستونه یا ردیفه یا مربع (دوبعدی)؟ مثل اشکل فرضی آرایه یک بعدی و دو بعدی. و دیگه اینکه اگر رنج دوبعدی باشه چطوری مقادیر رو توش می‌نویسه؟ ستونی یا ردیفی؟
همه این سوال‌ها موضوع رو برام مبهم کرده.
نه مهندس
وقتی یه رنج تعریف میشه؛ میشه ارایه‌ای از cell ها

در واقع میتونیم یه cell رو اینطوری هم بنویسم:
کد php:
range("A1"
این میشه به آبجکت range از سلول A1 ! میتونی بهش دسترسی داشته باشی!!

*----
سختیم میاد برم توی ویندوز واست امتحانش کنم Biggrin باید ۱۰۰ اشلوق بدی راضی شم برم ویندوز Biggrin
اونو که گفتین می‌دونم ولی اگر بیشتر از یه جواب داشت چی؟
نخواستم زحمت بدم. بازم روش کار می‌کنم شاید راه داد.
(۰۹-مرداد-۱۳۹۳, ۲۲:۱۷:۰۸)eppagh نوشته است: [ -> ]اونو که گفتین می‌دونم ولی اگر بیشتر از یه جواب داشت چی؟

خب به رنچ برمیگردونه که باید با for each یکی یکی مقادیرش رو بدست بیاری.. (تست نکردم؛ فکر میکنم همنطوری باشه)
اینجا رو پیدا کردم که خیلی خوب گفته (با تشکر از دیکشنری):
http://www.globaliconnect.com/excel/inde...Itemid=475
از روی مثالش اینو نوشتم:
کد php:
Dim wat As String
wat 
Cells(211).Value
Set RowNumber 
ActiveSheet.Range("K5:K11592").find(What:=watAfter:=Range("K4"), LookIn:=xlGenerallookat:=xlWhole)
If 
Not RowNumber Is Nothing Then
MsgBox RowNumber
.Address
Else:
MsgBox "نشد"
End If 
ولی خطای Type Mismatch میده.
ضمنا ظاهرا کد دقیقا با مثالی که ازش پیروی کردم مطابقت داره.
:at:اشکال از آرگومان After:=Rang بود. به دو دلیل:
اول اینکه چون خودش میگه After من فکر کردم از بعد از اون خونه ای که بهش میدیم شروع می کنه که اشتباه بود. خود اون خونه هم جزء جستجو هست.
دوم اینکه در کار من خونه ای که برای After:=Rang دادم خارج از آبجکت رنجم بود یعنی خونه اولی قبل از شروع رنج بود و به همین دلیل خطا می داد.
همونطور که می دونید یه متد FindNext هم هست که درواقع در ادامه کار با متد Find کار می کنه و فقط یه ارگومان داره که بهش میگه همون کار قبلی رو از کجا ادامه بده.
در لینک زیر که قبلا هم آوردم خیلی خوب این متدها رو توضیح داده. با اینکه انگلیسیه ولی حتی از فارسی هم بهتر قابل فهم بود! و این خودش نکته قابل توجهیه:
Find Method in Excel VBA, Find Multiple Occurrences, Find Method to do Vlookup, Find Method to Search Date