آموزش وردپرس قالب وردپرس قالب رايگان وردپرس درس وردپرس
کار با ستون محاسباتی یا Calculated Column - گروه ساقه

کار با ستون محاسباتی یا Calculated Column

خطاهای احتمالی در نصب شیرپوینت ۲۰۱۶
ژوئن 17, 2017
نحوه ایجاد سایت کالکشن در دیتابیس جدا
جولای 4, 2017

کار با ستون محاسباتی یا Calculated Column

کار با ستون‌های محاسباتی

ستون‌های محاسبه‌ای ستون‌هایی هستند که می‌توان به کمک آن‌ها مقادیر ستون‌های دیگر را ترکیب کرد. در ادامه، روند کار با این ستون‌ها و چندین مثال متنوع شرح داده می‌شود.

از طریق لینک زیر می‌توانید این مقاله را همراه با توابع مهم دیگر به صورت کامل در یک فایل PDF دانلود نمایید :


ابتدا جهت ایجاد ستون محاسبه‌ای ، در تنظیمات لیست روی ایجاد ستون کلیک کنید. سپس نوع یا Type آن را روی Calculated  یا محاسبه‌ای قرار دهید. در کادری به نام Formula یا فرمول که برای شما باز خواهد شد، می‌توانید فرمول مورد نظر خود را بنویسید و در بخش زیرین نیز می‌توانید نوع داده بازگشتی مورد نظر خود را تعیین کنید.
توجه: در زمان ایجاد کردن ستون محاسبه ای حتما از نوع صحیح بازگشتی آن اطمینان حاصل کنید.
در این بخش نمونه‌هایی از فرمول‌ها و مثال‌ها را برای شما جمع‌آوری کرده‌ایم:

فرمول‌های تاریخ و زمان

برای اضافه کردن عدد به تاریخ از عملگر(+) استفاده کنید. برای کم کردن مقدار یک عدد از عملگر(-) استفاده کنید.
Column1 (Date) Column2 (Number) Formula توضیحات 
2016/06/09 3 [Column1]+[Column2]= سه روز به 2016/06/09 اضافه می‌کند (2016/06/12)
2016/12/10 =[Column1]-4 4روز از  2016/12/10 کم می‌کند (2016/12/06)

اضافه یا کم کردن روز، ماه و یا سال از تاریخ
از توابع DATE , YEAR,MONTH,DAY استفاده کنید.
Column1 (Date) Column2 (Number) Formula توضیحات 
2016/06/09 3 =DATE(YEAR([Column1])+[Column2],MONTH([Column1]),DAY([Column1])) سه ماه به 2016/06/09 اضافه میکند (2016/09/09)
2016/02/10 5 =DATE(YEAR([Column1])+3,MONTH([Column1])+[Column2],DAY([Column1])+1) سه سال و پنج ماه و یک روز به 2016/02/10 اضافه می‌کند (2019/07/11)

محاسبه اختلاف بین دو تاریخ
از تابع DATEDIF استفاده کنید، نوع داده بازگشتی باید یک عدد باشد.
Column1 Column2 Formula توضیحات 
2016/01/01 2016/06/15 =DATEDIF([Column1], [Column2],”d”) تعداد روزهای بین دو تاریخ را بر می‌گرداند (166)
2014/08/01 2016/01/01 =DATEDIF([Column1], [Column2],”m”) تعداد ماه‌های بین دو تاریخ را بر می‌گرداند (17)

محاسبه اختلاف بین دو زمان
از تابع INT برای کم کردن یک date/time از دیگری استفاده کنید، سپس آن عدد را در عدد واحد زمان(ساعت، دقیقه، ثانیه) در روز ضرب کنید. نوع داده بازگشتی باید یک عدد باشد.
Column1 Column2 Formula توضیحات 
2016/06/09 10:35 AM 2016/06/10 3:30 PM =INT(([Column2]-[Column1])*24) تعداد ساعات بین دو زمان (28)
2016/06/09 10:35 AM 2016/06/10 3:30 PM =INT(([Column2]-[Column1])*1440) تعداد دقیقه‌ها بین دو زمان (1735)
2016/06/09 10:35 AM 2016/06/10 3:30 PM =INT(([Column2]-[Column1])*86400) تعداد ثانیه‌ها بین دو زمان (104100)

نمایش تاریخ بر اساس روز هفته
برای تبدیل تاریخ به متن به جهت روز هفته، از توابع TEXT و WEEKDAY استفاده کنید. نوع داده بازگشتی باید یک خط متن باشد.
Column1 Formula توضیحات 
2016/04/16 =TEXT(WEEKDAY([Column1]), “dddd”) روز هفته برای تاریخ را محاسبه کرده و نام کامل آن را برمی‌گرداند (Saturday)
2016/04/21 =TEXT(WEEKDAY([Column1]), “ddd”) روز هفته برای تاریخ را محاسبه کرده و نام مخفف آن را برمی‌گرداند (Thu)
 

فرمول‌های ریاضی(عددی)

شما می‌توانید از فرمول‌های جاری برای اجرای محاسبات ریاضی متنوعی استفاده کنید ، مانند جمع، تفریق، ضرب، تقسیم اعداد محاسبه میانگین اعداد; و انجام مقایسه‌های بزرگتر و کوچکتر.
جمع یا تفریق اعداد
برای اضافه کردن اعداد در دو ستون یا بیشتر در ردیف از عملگر جمع(+) یا تفریق(-) استفاده کنید.
ColumnA ColumnB ColumnC Formula توضیحات 
15 10 5 [ColumnA]+[ColumnB]+[ColumnC]= جمع 15+10+5 باهم (30)
15 10 5 [ColumnA]-[ColumnB]-[ColumnC]= تفریق 15-10-5 (0)

ضرب یا تقسیم اعداد
Column1 Column2 Formula توضیحات 
5 2 [Column1]*[Column2]= ضرب 5 در 2 (10)
15000 12 [Column1]/ [Column2]= تقسیم 15000 بر 12 (1250)

محاسبه میانگین اعداد
برای محاسبه کردن میانگین اعداد در دو ستون یا بیشتر در ردیف از تابع AVERAGE استفاده کنید.
Column1 Column2 Column3 Formula توصیحات 
6 5 4 =AVERAGE([Column1], [Column2],[Column3]) میانگین اعداد در سه ستون اول (5)
6 5 4 =AVERAGE(IF([Column1]>[Column2], [Column1]-[Column2], 10), [Column3]) اگر ستون 1 از ستون 2 بزرگتر بود، میانگین تفریق ستونها و ستون 3 را محسابه کند. در غیر این صورت میانگین عدد 10 و ستون 3 را حساب کند. (2.5)

محاسبه کوچک‌ترین یا بزرگ‌ترین عدد در یک بازه
برای محاسبه کوچک‌ترین یا بزرگ٬ترین عدد در دو ستون یا بیشتر در ردیف از توابع MIN و MAX استفاده کنید.
Column1 Column2 Column3 Formula توضیحات 
10 7 9 =MIN([Column1], [Column2], [Column3]) کوچکترین عدد (7)
10 7 9 =MAX([Column1], [Column2], [Column3]) بزرگترین عدد (10)

محاسبه اختلاف بین دو عدد بر حسب درصد
از عملگرهای تفریق(-) و تقسیم(/) و تابع ABS استفاده کنید.
Column1 Column2 Formula توضیحات 
2342 2500 =([Column2]-[Column1])/ABS([Column1]) تغییر بر حسب درصد (6.75%)

افزایش یا کاهش دادن یک عدد بر حسب درصد
برای این محاسبه از عملگر (%) استفاده کنید.
Column1 Column2 Formula توضیحات 
100 =[Column1]*(1.05) افزایش عدد در ستون یک با 5درصد (105)
100 7%(ستون 2 باید فیلد عددی باشد تا به درصد نمایش داده شود) =[Column1]*(1+[Column2]) افزایش عدد در ستون یک بوسیله مقدار درصد در ستون دو: 7% (107)
100 7%(ستون 2 باید فیلد عددی باشد تا به درصد نمایش داده شود) =[Column1]*(1-[Column2]) کاهش عدد در ستون یک بوسیله مقدار درصد در ستون دو: 7% (93)

تعیین بزرگتر یا کوچکتر بودن عدد از عددی دیگر
جهت مقایسه فیلدهای عددی از تابع IF استفاده کنید. نوع داده بازگشتی باید یک خط متن باشد.
Column1 Column2 Formula توضیحات 
15 9 =IF([Column1]>[Column2], “Yes”, “No”) آیا ستون یک از ستون دو بزرگتر است ؟ (Yes)
15 9 =IF([Column1]<=[Column2], “OK”, “Not OK”) آیا ستون یک کوچکتر یا مساوی با ستون دو است ؟ (Not OK)

شرط‌های عددی با یک تابع AND یا OR
با استفاده از توابع AND یا OR می‌توانید فرمول٬های شرطی پیچیده٬تری ایجاد کنید.
Column1 Column2 Column3 Formula توضیحات 
15 9 8 =IF(AND([Column1]>[Column2], [Column1]<[Column3]), “OK”, “Not OK”) اگر 15 بزرگتر از 9 است و 15 کوچکتر از 8 است "OK"را برگردان. (Not OK)
15 9 8 =IF(OR([Column1]>[Column2], [Column1]<[Column3]), “Yes”, “No”) اگر 15 بزرگتر از 9 است یا 15 کوچکتر از 8 است "Yes"را برگردان. (Yes)

فرمول‌های متنی

شما می‌توانید از فرمول‌های جاری جهت ترکیب متن‌ها استفاده کنید، مانند ترکیب یا الحاق مقادیر چندین ستون، مقایسه محتوی ستون‌ها و حذف کاراکترها یا فاصله‌ها.
تغییر قالب متن
برای تغییر قالب متن از توابع UPPER,LOWER یا PROPER استفاده کنید.
Column1 Formula توضیحات 
John Doe =UPPER([Column1]) متن را به حروف بزرگ تغییر می‌دهد (JOHN DOE)
John Doe =LOWER([Column1]) متن را به حروف کوچک تغییر می‌دهد (john doe)
jane doe =PROPER([Column1]) حروف اول متن را به بزرگ تغییر می‌ دهد (Jane Doe)

ترکیب مقادیر ستون متنی با یکدیگر
برای ترکیب نام و نام خانوادگی، از عملگر (&) یا تابع CONCATENATE استفاده کنید.
Column1 Column2 Formula توضیحات 
Carlos Carvallo =[Column1]&[Column2] دو متن را با هم ترکیب می کند (CarlosCarvallo)
Carlos Carvallo =[Column1]&” “&[Column2] دو متن را با هم ترکیب می کند، با یک فاصله آنها را جدا می کند (Carlos Carvallo)
Carlos Carvallo =[Column2]&”, “&[Column1] دو متن را با هم ترکیب می کند، با یک فاصله و یک ویرگول آنها را جدا می کند (Carvallo, Carlos)

ترکیب متن و اعداد از ستونهای مختلف
برای ترکیب متن و اعداد، از تابع CONCATENATE، عملگر(&)، یا تابع TEXT و عملگر(&) استفاده کنید.
Column1 Column2 Formula توضیحات 
Yang 28 =[Column1]&” sold “&[Column2]&” units.” محتوا را در یک متن ترکیب می‌کند (.Yang sold 28 units)
Dubois 40% =[Column1]&” sold “&TEXT([Column2],”0%”)&” of the total sales.” محتوا را در یک متن ترکیب می‌کند. توجه کنید که تابع TEXT فرمت متن موجود در ستون 2 را به جای مقدار 0.4 اصلاح می‌کند (.Dubois sold 40% of the total sales) 

ترکیب متن با یک تاریخ یا زمان
برای ترکیب متن با یک تاریخ یا زمان، از تابع TEXT و عملگر(&) استفاده کنید.
Column1 Column2 Formula توضیحات 
2016/06/20 =”Payment due: “&TEXT([Column2], “mmmm dd, yyyy”) متن را با یک تاریخ ترکیب می‌کند (Payment due: June 20, 2016)
Billing Date 2016/06/05 =[Column1]&” “&TEXT([Column2], “mmm-dd-yyyy”) متن و تاریخ را از ستونهای متفاوت درون یک ستون ترکیب میکند (Billing Date Jun-05-2016)

تعیین اینکه مقدار یک ستون با بخشی از آن با متن مشخصی هم‌خوانی دارد
برای تعیین اینکه مقدار یک ستون یا بخشی از آن با متن مشخصی هم‌خوانی دارد یا خیر، از توابع IF، FIND ،SEARCH و ISNUMBER استفاده کنید.
Column1 Formula توضیحات 
Urgent =IF([Column1]=”Urgent”, “Yes”, “No”) تعیین می‌کند که آیا ستون یک Urgent است یا خیر (Yes)
Standard =IF(ISNUMBER(FIND(“s”,[Column1])), “OK”, “Not OK”) تعیین می‌کند که آیا ستون یک شامل حرف s است یا خیر (OK)
BD123 =ISNUMBER(FIND(“BD”,[Column1])) تعیین می کند که آیا ستون یک شامل BD است یا خیر (Yes)

حذف کاراکترها از متن
برای حذف کاراکتر‌ها از متن، از توابع LEN ، LEFT و RIGHT استفاده کنید.
Column1 Formula توضیحات 
Vitamin A =LEFT([Column1],LEN([Column1])-2) 7کاراکتر بر می‌گرداند(2-9)، شروع از سمت چپ(Vitamin)
Vitamin B1 =RIGHT([Column1], LEN([Column1])-8) 2کاراکتر بر می‌گرداند(8-10)، شروع از سمت راست (B1)

حذف فاصله‌ها از ابتدا و انتهای یک ستون
برای حذف فاصله‌ها از یک ستون، از تابع TRIM استفاده کنید.
Column1 Formula توضیحات 
     Hello there! =TRIM([Column1]) فاصله‌ها را از ابتدا و انتهای متن حذف می‌کند (!Hello there)

6 دیدگاه ها

  1. ادوارد زادوریان گفت:

    سلام. ممنون از اینکه این پست رو گذاشتید.
    برای من سوالی پیش اومده و متاسفانه با توجه به جستجویی که در اینتنرنت کردم، نتونستم جواب سوالم رو پیدا کنم.

    سوال: فرض کنید که من لیستی دارم به نام لیست کالاها که این لیست شامل ستون های نام کالا و قیمت هستش. لیستی هم دارم به نام لیست سفارشات با ستون های تاریخ سفارش، نام کالا، تعداد سفارش. بین این ددو جدول هم با فیلد lookup ارتباط ایجاد کردم که که لیست کالا رو بتونم توی جدول سفارشات ببینم. سوال بنده این هست که می خوام توی لیست سفارشات ستونی محاسباتی داشته باشم که قیمت رو از جدول کالا ضرب کنه در ستون تعداد خریدها. برای این منظور فیلدی با نوع محاسباتی ایجاد کردم، ولی متاسفانه در فیلد محاسباتی فقط و فقط می شه روی فیدهای جدول سفارشات عملیات محاسباتی انجام داد و فیلد قیمت از جدول کالا قابل دیدن نیست. من حتی با sharepoint designer هم نتونستم اون رو ایجاد کنم. در حال حاضر دارم با infopath تلاش می کنم ولی گویا اینکه اصلا این کار امکان پذیر نیست. اونقدر که متوجه شدم نمی شه روی فیلد lookup محاسبات انحام داد. فیلدهای جدول دیگر رو هم نمی شه استفاده کرد. این کار به راحتی توی بانک های اطلاعاتی مانند sql و access قابل پیاده سازیه ولی اینجا عملا من نتونستم. اگر راهنمایی کنید ممنون می شم که با چه ترفندی و یا با چه نرم افزاری و یا با چه تکنیکی می شه این کار رو گرد.
    مجدداً از سایت خوبتون هم تشکر می کنم.

  2. محمدرضا دستوری گفت:

    سلام. دسترسی به ستون های دیگر lookup در ستون های محاسباتی امکان پذیر نیست. کافی است در لیست سفارشات یک ستون قیمت هم تعریف نمایید و قیمت کالا را به صورت اتوماتیک ذخیره کنید. این کار را هم در سطح فرم (با اینفوپث یا فرمسازهای دیگه مثل پاور فرم قیمت رو کوئری زده و پر کنید) و یا با استفاده از ورکفلو (با ورکفلوی شیرپوینت یا نینتکس یک ورکفلو بنویسید که بعد از اینکه آیتم ثبت می شود قیمت را بر اساس ستون lookup کوئری زده و و در فیلد مورد نظر ذخیره کند) می توانید انجام دهید. حالا با داشتن قیمت و تعداد در یک لیست می توانید از ستون محاسباتی استفاده کنید.
    این راه حل با استفاده از ستون محاسباتی بود. اما توصیه می کنیم برای همچنین نیازی، این محاسبه را در سطح فرم انجام داده و ذخیره کنید.

  3. ادوارد زادوریان گفت:

    سلام .ممنون بابت راهنمایی خوبتون. تست می کنم ببینم چه اتفاق می افته. با سپاس فراوان

  4. مرتضی گفت:

    سلام
    ممنون و سپاس از انتشار و آموزش دانسته هاتون
    ممنون میشم اگه راهنمایی کنید!!
    یک جدول ورودی اعضا درست کردم که مشخصات فرد بعلاوه تاریخ ورود فرد به مجموعه در آن ثبت میشود;
    یک فیلد محاسباتی قرار دادم تا تعداد روز های گذشته از زمان ورود فرد تا به امروز در آن محاسبه شود، ولی متاسفانه در بخش Expression نمیتوانم از تاریخ روز استفاده کنم
    IIf(IsNull([Left Date]),Now()-[Date On Board],[Left Date]-[Date On Board])
    در واقع توابعی مثل ()Now ؛ ()Date شناخته نمیشوند.
    در کل دنبال حرکتی برای محاسبه تعداد روز گذشته از یک تاریخ خاص تا به روز فعلی که زمان مشخصی ندارد میباشم
    سپاس فراوان

  5. باباخانی گفت:

    سلام
    من میخوام در InfoPath برای یک یلد یک فرمول بگذارم که اگر مقدار سه فیلد دیگر برابر با سه واژه مشخص بود در این فیلد واژه Extreme رو جایگذاری کنه
    میتونید راهنمایی کنید؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *