
تابع کاربردی Address
تابع Address در اکسل یکی از توابع خیلی پرکاربرد هست. خروجی این تابع آدرس یک سلول هست و از این تابع برای ساختن محدوده ها استفاده میشه. برای این مسئله باید محدوده ها رو بسازیم. برای اینکه کاربرد این تابع رو ببینیم. لازمه اول آرگومان های این تابع رو معرفی کنیم:
تابع Address پنج آرگومان داره:
Row_Num: شماره ردیف آدرس سلول مورد نظر رو نشون میده. جنس این آرگومان عددی است.
Col_Num: شماره ستون آدرس سلول مورد نظر رو نشون میده. جنس این آرگومان عددی است.
[Abs_Num]: مطلق و نسبی بودن یک سلول. $ در آدرس یک سلول رو تعیین میکنه. از ۱ تا ۴. هر عدد، یکی از حالت ها مطلق و نسبی بودن رو نشون میده. در صورتیکه این آرگومان تعیین نشه بصورت پیش فرض عدد ۱ یعنی Absolute یا کاملا مطلق در نظر گرفته میشه.

[A1]: نحوه آدرس دهی سلول بصورت A1 یا R1c1. این آرگومان بصورت ۰ و ۱ هست. اگر این آرگومان تعیین نیشه، بصورت پیش فرض عدد ۱ یا همون حالت A1 برای آدرس دهی تعیین میشه.
[Sheet_Text]: اسم شیت رو تعیین میکنه. در صورتی که تعیین نشه، آدرس سلول بدون نام شیت خواهد بود.
همونطور که می بینید سه آرگومان آخر داخل براکت [ ] هستن و این یعنی که این آرگومان ها اختیاری هستن.
در ادامه با شرح مثال، کاربردهای این تابع رو میبینیم.
مثال اول
فرض کنید ۴ شیت داریم که میخوایم اطلاعات موجود در سلول D10 همه شیت ها رو یکجا جمع کنیم. برای اینکه با یک فرمول بتونیم خروجی مد نظر رو داشته باشیم، از تابع Address استفاده میکنیم:
=Address(10,4,1,1,A1)
شرح فرمول:
ردیف ۱۰ و ستون ۴ یعنی سلول D10 ، دو آرگومان بعدی که ۱ در نظر گرفته شده یعنی آدرس دهی بصورت مطلق و بصورت نام ستون باشه یعنی $D$۱۰. آرگومان آخر هم که اسم شیت هست و از سلول A1 گرفته شده. (شکل ۱)

شکل ۱- تابع Address در اکسل – فراخوانی سلول مشابه از شیت های مختلف
در نهایت هم آدرس های ایجاد شده در تابع Indirect قرار میدیم که بصورت غیرمستقیم به محتوای آدرس سلول های بدست آمده اشاره بشه.
فقط از طریق تابع Indirect هست که میتونیم به آدرس های خروجی تابع Address دسترسی پیدا کنیم. در واقع خروجی تابع Address حکم متن داره و تا زمانیکه در تابع Indirect قرار نگیره، خاصیت رنج (Range) نداره.
مثال دوم
در شیتی به نام “Sheet2” یک سری داده در ردیف اول ثبت شده است. حالا در یک شیت دیگه میخوایم داده موجود در سلول اول رو با تک تک سلول های بعدی جمع بزنیم. یعنی در یک سلول نوشته شده =A1+B1. میخواهیم با درگ کردن به سمت پایین، بجای اینکه شماره ردیف B1 اضافه بشه، شماره ستونش اضافه بشه. یعنی سلول بعد بشه =A1+C1، بعدی =A1+D1 و …
همونطور که میدونیم در اکسل وقتی به سمت پایین و بالا حرکت میکنیم، بصورت ذاتی فقط شماره ردیف تغییر میکنه نه ستون. پس متوجه میشیم که با $ این مسئله حل نمیشه. باید کاری کنیم تا این آدرس ساخته بشه. به شکل زیر دقت کنید. طوری آدرس رو می نویسیم که با درگ به سمت پایین شماره ستون اضافه بشه:
چون میخوایم با درگ به سمت پایین، شماره ردیف ثابت باشه و فقط شماره ستون زیاد بشه، در آرگومان Row_Num عدد ۱ میذاریم و در قسمت Col_Num تابعی استفاده میکنیم که با درگ به سمت پایین، یکی یکی افزایش پیدا کنه. پس از تابع Row() استفاده میکنیم. خروجی تابع Row(B2) عدد ۲ هست و همینطور الی آخر.
حالا که قسمت دوم فرمول رو ساختیم، کافیه با قسمت اول که A1 ثابت هست، ترکیب کنیم و درگ کنیم به سمت پایین. یعنی:
=$A$1+Indirect(Address(1,Row(B2),”Sheet2”))
با این کار، با درگ به سمت پایین، آرگومان Col_Num یکی یکی اضافه میشه و این هر بار یعنی B1, C1, D1 و …
با تابع Address در اکسل کارهای خلاقانه زیاید میشه انجام داد. سعی کنید خوب کارکرد این تابع رو درک کنید که به موقع بتونید استفاده کنید.
پیشنهاد میکنم مقالات زیر رو هم نگاه کن که ترکیبات بیشتری از این تابع یاد بگیری:





با عرض سلام و خسته نباشید و با تشکر بخاطر تمامی زحمات شما عزیزان
جسارتا یک سوالی داشتم که اگر جواب بدید نهایت سپاس و قدردانی رو دارم و خواهم داشت
بر روی سلولی که قبلا داده وارد شده است دابل کلیک میکنم و سپس کلید اینتر رو میزنم و از سلول مورد نظر خارج میشم (ممکن است تغییرات داده شود و یا تغییراتی داده نشود)، از طریق کدنویسی VB در قسمت “Private Sub Worksheet_Change(ByVal Target As Range)” چگونه میتوانم آدرس یا موقعیت سلول جاری (کلیک شده) رو پیدا کنم؟ یعنی MsgBox بهم نشون بده که سلولی که من دابل کلیک کرده و بعد خارج شده ام مثلا N13 است.
پیشاپیش از تمامی الطاف شما تشکر میکنم
سلام
اینو بزنید
MsgBox Target.Address
با سلام
من یک فایل دارم با حدود ۳۰ شیت که هر شیت یک سری اطلاعات تکراری برای هر مدرسه در هر استان داره حالا می خوام با تعریف کد برای هر استان در یک شیت جدا اطلاعات را برای من فراخوان کنه از فرمول ترکیبی IFERROR و VLOOKUP استفاده کردم اما در برخی موارد می خوام قبل از فراخوان، ردیف های مخصوص در یک ستون را جمع ببنده بعد برام نمایش بده مثلا در ستون ۶۷ ابتدا ردیف های A4 ,A8 ,A12,A16 ,…. را ابتدا جمع ببنده بعد در شیت مورد نظر نمایش بده در ضمن از فرمول زیر استفاده کرده ام
=IFERROR(VLOOKUP($E$2,قم!$A:BQ,67,FALSE),””)
درود بر شما
خب اینکه شما اینو میخواید باید یک منطق و فرآیند یا مثلا ظرطی داشته باشه که بفهمه چیا رو جمع بزنه!
در کل خیلی بستگی به ساختار داره
اگر مسلط هستید با پاورکوئری تجمیع کنید و بعد محاسبات گزارشگیری
اگر نه جمع رو در هر شیت حساب کنید بعد فراخوان یکنید
سلام
من میخوام آدرس یک سلول خاص، مثل min رو از یک جدول پیدا کنم
درواقع میخوام با رفرنس دادن یک مقدار که میتونه کمترین، بیشترین یا هر مقدار دیگه از جدول باشه میخوام آدرس اون رو در جدولی از داده ها پیدا کنم
از چه توابعی باید استفاده کنم؟
درود
ترکیب match و min و استفاده از نتیجه در address
سلام در کد زیر میخوام که عدد داخل سلول G1 خوانده بشه که متغیر هم هست و بر اساس اون عدد محدوده مشخص بشه یعنی اگر مثلا G1= 10 بود محدوده بشه C1:C10 و اگر G1 =20 بود محدوده بشه C1:c20 و به همین ترتیب تا الی اخر / چطور میتونم اخر کد بجای G1 یک تابع یا روش دیگه داشته باشم که محدوده رو متغیر کنه ؟
Range(“B1”).Copy Destination:=Worksheets(“Sheet1”).Range(“C1:C(G1)”)
درود،
میتونید از تابع Resize استفاده کنید:
Range("B1").Copy Worksheets("Sheet1").Range("C1").Resize(Range("G1"), 1)سلام
فرق address با offset و با Indirect در چیست؟
درود
indirect که ارجاع میده به خروجی ادرس
address هم که ادرس میسازه و بنا به شرایط خودش و ارگومانهای خودش
offset هم میتونه محدوده های متجرک رو در نظر بگیره
سلام.وقتی روی شیت پسورد میذارم و قفل میکنمش(و تمام آیتم های مربوطه بجز گزینه اول رو تیک میزنم) و به یک کامپیوتر دیگه منتقلش می کنم، در کامپیوتر دوم، بدون ورود پسورد قفلش باز میشه.آخه چرا؟؟؟ در کامپیوتر دوم، کاربر فقط باید روی Unprotect کلیک کنه و هیچ پسوردی ازش نمیخواد!!!
سلام
اگر هنگام قفل کرد شیت رمز رو تعیین نکنید این اتفاق میفته، در غیر اینصورت با زدن دکمه Unprotect حتما باید رمز وارد بشه.
ضمن اینکه شکستن این رمز چند ثانیه بیشتر زمان نمیبره.
سلام و خسته نباشید .
در شیت اول از ردیف ۱ تا ۱۰۰ تاریخ رو درج کردم (مثلاً ۱۴۰۰/۱۱/۳۰تا ۱۴۰۱/۰۳/۰۹ ) . می خوام در شیت دوم هر یک از این تاریخ ها در یک صفحه نوشته شوند . باید چجوری از فرمول استفاده کنم نه با نسبی می تونم حلش کنم نه با مطلق
درود بر شما
یک پیوت بگیرید از روش
دیت رو بذارید توی فیلتر
و بعد از قسمت option گزینه report filter page بزنید
سلام
برای اینکه آدرس آخرین سلولی که حاوی عدد صفر هست رو پیدا کنم از چه تابعی استفاده کنم. چون عدد صفر در آن ستون تکراری است، توابع موجود اولین صفر را پیدا می کنند.
متشکرم
درود
باید از فرمول نویسی آرایه ای استفاده کنید
اگر آشنایی ندارید این مقاله رو بخونید
این فرمول رو استفاده کنید:
این فرمول شماره ردیف آخرین سلولی که حاوی صفر هست رو میده
میتونید بذارید توی تابع Address
سلام وقت بخیر
ما داخل انبار فروشگاه در داخل یک اکسل تمامی موجودی رو داریم
برای ادرس زدن مشکلی که هست باید اطلاعات کالا رو برای ادرس زدن دستی وارد کنیم
فرمولی هست که ما با گان زدن کالا داخل اکسل اطلاعات کالا رو از یه شیت برداره و به بده تو شیت جدید تا دستی وارد نکنیم
؟
درود
اگر اطلاعات رو داخ یک جدول داشته باشید میتونید با توابع جستجو مثل vlookup, match, index جستجوی مورد نظر رو انجام بدید
سلام چطوری میشه نام یک شیت را در یک سل با آدرس دهی آورد.
سلام
کافیه با استفاده از تابع Cell خصوصیت FilePath رو بدست بیارید که آدرس فایل به همراه نامه شیت هست.
بعد با استفاده از توابع Right و Find میتونید نام شیت رو که بعد از ] قرار گرفته دربیارید.