خطاهای احتمالی در نصب شیرپوینت ۲۰۱۶
ژوئن 17, 2017نحوه ایجاد سایت کالکشن در دیتابیس جدا
جولای 4, 2017
کار با ستونهای محاسباتی
ستونهای محاسبهای ستونهایی هستند که میتوان به کمک آنها مقادیر ستونهای دیگر را ترکیب کرد. در ادامه، روند کار با این ستونها و چندین مثال متنوع شرح داده میشود.
از طریق لینک زیر میتوانید این مقاله را همراه با توابع مهم دیگر به صورت کامل در یک فایل 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 دیدگاه ها
سلام. ممنون از اینکه این پست رو گذاشتید.
برای من سوالی پیش اومده و متاسفانه با توجه به جستجویی که در اینتنرنت کردم، نتونستم جواب سوالم رو پیدا کنم.
سوال: فرض کنید که من لیستی دارم به نام لیست کالاها که این لیست شامل ستون های نام کالا و قیمت هستش. لیستی هم دارم به نام لیست سفارشات با ستون های تاریخ سفارش، نام کالا، تعداد سفارش. بین این ددو جدول هم با فیلد lookup ارتباط ایجاد کردم که که لیست کالا رو بتونم توی جدول سفارشات ببینم. سوال بنده این هست که می خوام توی لیست سفارشات ستونی محاسباتی داشته باشم که قیمت رو از جدول کالا ضرب کنه در ستون تعداد خریدها. برای این منظور فیلدی با نوع محاسباتی ایجاد کردم، ولی متاسفانه در فیلد محاسباتی فقط و فقط می شه روی فیدهای جدول سفارشات عملیات محاسباتی انجام داد و فیلد قیمت از جدول کالا قابل دیدن نیست. من حتی با sharepoint designer هم نتونستم اون رو ایجاد کنم. در حال حاضر دارم با infopath تلاش می کنم ولی گویا اینکه اصلا این کار امکان پذیر نیست. اونقدر که متوجه شدم نمی شه روی فیلد lookup محاسبات انحام داد. فیلدهای جدول دیگر رو هم نمی شه استفاده کرد. این کار به راحتی توی بانک های اطلاعاتی مانند sql و access قابل پیاده سازیه ولی اینجا عملا من نتونستم. اگر راهنمایی کنید ممنون می شم که با چه ترفندی و یا با چه نرم افزاری و یا با چه تکنیکی می شه این کار رو گرد.
مجدداً از سایت خوبتون هم تشکر می کنم.
سلام. دسترسی به ستون های دیگر lookup در ستون های محاسباتی امکان پذیر نیست. کافی است در لیست سفارشات یک ستون قیمت هم تعریف نمایید و قیمت کالا را به صورت اتوماتیک ذخیره کنید. این کار را هم در سطح فرم (با اینفوپث یا فرمسازهای دیگه مثل پاور فرم قیمت رو کوئری زده و پر کنید) و یا با استفاده از ورکفلو (با ورکفلوی شیرپوینت یا نینتکس یک ورکفلو بنویسید که بعد از اینکه آیتم ثبت می شود قیمت را بر اساس ستون lookup کوئری زده و و در فیلد مورد نظر ذخیره کند) می توانید انجام دهید. حالا با داشتن قیمت و تعداد در یک لیست می توانید از ستون محاسباتی استفاده کنید.
این راه حل با استفاده از ستون محاسباتی بود. اما توصیه می کنیم برای همچنین نیازی، این محاسبه را در سطح فرم انجام داده و ذخیره کنید.
سلام .ممنون بابت راهنمایی خوبتون. تست می کنم ببینم چه اتفاق می افته. با سپاس فراوان
خواهش میکنم
سلام
ممنون و سپاس از انتشار و آموزش دانسته هاتون
ممنون میشم اگه راهنمایی کنید!!
یک جدول ورودی اعضا درست کردم که مشخصات فرد بعلاوه تاریخ ورود فرد به مجموعه در آن ثبت میشود;
یک فیلد محاسباتی قرار دادم تا تعداد روز های گذشته از زمان ورود فرد تا به امروز در آن محاسبه شود، ولی متاسفانه در بخش Expression نمیتوانم از تاریخ روز استفاده کنم
IIf(IsNull([Left Date]),Now()-[Date On Board],[Left Date]-[Date On Board])
در واقع توابعی مثل ()Now ؛ ()Date شناخته نمیشوند.
در کل دنبال حرکتی برای محاسبه تعداد روز گذشته از یک تاریخ خاص تا به روز فعلی که زمان مشخصی ندارد میباشم
سپاس فراوان
سلام
من میخوام در InfoPath برای یک یلد یک فرمول بگذارم که اگر مقدار سه فیلد دیگر برابر با سه واژه مشخص بود در این فیلد واژه Extreme رو جایگذاری کنه
میتونید راهنمایی کنید؟