فنی و مهندسی-پایپینگ ASME ASTM PIPE

فنی و مهندسی-پایپینگ ASME ASTM PIPE

فنی و مهندسی-پایپینگ ASME ASTM PIPE

فنی و مهندسی-پایپینگ ASME ASTM PIPE

محافظت دینامیکی سلولها از تغییر - توسط ویژوال بیسیک

 

 

مزاحم نمی شوم در پایان چند سوال اکسل دارم که خدمتتان می فرستم :

 چطور میشود لیست های بر پا کرد که بمحض ورود اطلاعات جدید در آن و افزایش رکورد ها دامنه protection نیز بطور اتوماتیک گسترده  شود و تا آخرین ردیف پیش رود ؟

هدف از این کار اینست که اطلاعات ورودی دستخوش تغییرات خواسته یا ناخواسته نشود .

 

برای دریافت فایل کلیک کنید! (بعد از زدن لینک 30 ثانیه صبر کنید و سپس روی گزینه Click Here for Download کلیک کنید.)

 

سلولهای این sheet در صورتیکه پر شده باشند در مقابل تغییرات حفاظت می شوند .

بدین ترتیب که اگر checkbox بالا را در حالت انتخاب قرار دهیم در  صورتیکه بخواهیم در خانه ای که پر است مقداری را وارد کنیم، از اینکار جلوگیری بعمل خواهد آمد.

(توسط جعبه ابزار فرم یک CheckBox به sheet اضافه کنید)

کد برنامه ویژوال بیسیک  :

 

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

 

cellval = ActiveCell.Value

sheetprotect = Range("a1").Value

 

 

If cellval <> "" And sheetprotect Then

    ActiveSheet.Protect

Else

    ActiveSheet.Unprotect

End If

 

 

End

تابعی برای یافتن آخرین مقدار یک محدود – Visual Basic Function fo

من یک مشکلی دارم در یک سلول میخواهم همیشه مقدار آخرین سلول پر شده یک محدوده از یک ستون را داشته باشم چگونه می توانم اینکار را انجام دهم لطفا هرچه سریعتر من را راهنمایی کنید.

اگر برایتان مقدور است

اردشیر

 

 

 

با سلام خدمت دوست عزیز

 

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

کار با این توابع را با ذکر مثالی نشان داده ام.

فرمول خانه D1 و D2 در شکل نشان داده شده است ،

 

 

A

B

C

D

E

F

1

Day

Num

 

Mon

< - - - -

=INDEX(A:B,COUNTA(A:A),1)

2

Sun

2

 

14

< - - - -

=INDEX(A:B,COUNTA(B:B),2)

3

Mon

4

 

 

 

 

4

Tue

6

 

 

 

 

5

Wed

8

 

 

 

 

6

Thu

10

 

 

 

 

7

Fri

12

 

 

 

 

8

Sat

14

 

 

 

 

9

Sun

 

 

 

 

 

10

Mon

 

 

 

 

 

 

اما اگر ! محدوه شما غیر پیوسته باشد حالت خاصی پیش می‌آید و فرمول نویسی آن با مراجع دورانی به سختی میسر است و می‌دانیم که مراجع دورانی حداکثر Iterations = 32767 خواهد بود و این درحالی است که شما 32536  خانه در اکسل دارید، پس اینهم نا کارآمد است. (البته اینکار انجام شدنی است).

 

اما راه حل اصولی اینگونه موارد نوشتن یک تابع ساده است و من این تابع را برای شما می‌نویسم ، برای استفاده از این تابع مراحل زیر را برای ایجاد آن طی کنید .

 

 

  • کلید Alt+F11 را با هم بزنید تا به محیط ویژوال بیسک بروید.
  • از منوی Insert   گزینه Module را انتخاب کنید.
  • کدهای زیر را در آنجا Paste  کنید.
  • از ویژال بیسیک با زدن گزینه Close خارج شوید.

 

 

Function FINDLASTVALUE(CellRange As Range)

 

' THIS FUNCTION FIND FINAL VALUE IN A SPECIFIC RANGE

 

For Each C In CellRange

 

    If C.Value <> "" Then

        FINDLASTVALUE = C.Value

    End If

   

Next C

 

End Function

 

حال در اکسل تابعی به نام FINDLASTVALUE دارید که توسط آن می‌توانید مقدار آخرین خانه هر محدوده را پیدا کنید .

بعنوان مثال در اکسل می‌نویسیم :

=FINDLASTVALUE(A:A)

که آخرین مقدار را در محدوده ستون A برای ما پیدا می‌کند

اکسل

یادداشتی بر روند کردن اعداد در اکسل

 در کلاس برای شروع این مبحث اینچنین شروع می‌کنم که خانه‌های اکسل مثل آدمها و سکه‌ اند، یعنی دو رو دارند . یک ظاهر و و یک باطن .

مانند خانه‌ای که تاریخ 7/27/2006 را نشان می‌دهد اما باطن آن عدد 38925 است.

در کار با رقم های اعشار اعداد نیز ما همین حالت را داریم ، بدین ترتیب که اگر از Toolbar گزینه‌های Decrase Decimal  و Incrase Decimal  را انتخاب کنیم ، در واقع فقط ظاهر آن خانه تغییر کرده است و در صورتیکه روی این خانه عملیات ریاضی انجام دهیم ، باطن خانه در آن محاسبات شرکت خواهد کرد.

 

 

در مثال زیر این امر به وضوح مشخص است که در خانه عدد 123.1 نشان داده می‌شود اما در نوار فرمول مقدار واقعی این خانه که 123.1233 است را می‌بینیم.

 

منظور از روند کردن یک عدد، یعنی تغییر دائمی در رقمهای آن عدد.

*       روند کردن قسمت اعشار یک عدد

*       روند کردن قسمت صحیح یک عدد

 

تابع Round

برای گرد کردن تا تعداد رقم دلخواه اعشار بکار می‌رود ، بدین صورت که :

ROUNDUP(Number,Num_digits)

Number : عددی که می‌خواهیم آنرا روند کنیم.

Num_digits : دقت اعشار

اگر پارامتر دوم عدد مثبت باشد، رقم داده شده را با آن دقت اعشار داده شده گرد می‌کند (عدد 5 بستگی به رقم بعدش دارد ، اگر عدد بعد از 5 از 5 بیشتر باشد 5 به 6 گرد می‌شود)

·         اگر صفر باشد فقط قسمت صحیح عدد را می‌دهد

·         اگر عدد منفی باشد از سمت چپ ممیز شروع به گرد کردن می‌کند.

 

=ROUND(2.15, 1)

عدد 2.15 را تا یک رقم اعشار گرد می‌کند که می‌شود 2.1

=ROUND(2.149, 1)

Rounds 2.149 to one decimal place (2.1)

=ROUND(-1.475, 2)

Rounds -1.475 to two decimal places (-1.48)

=ROUND(21.5, -1)

Rounds 21.5 to one decimal place to the left of the decimal point (20)

 

ROUNDDOWN

گرد کردن اعداد به سمت صفر

=ROUNDDOWN(2.578;2)à2.57

ROUNDUP

 گرد کردن اعداد دور از صفر

=ROUNDUP(2.578;2)à2.58

CEILING

عدد 2.4 را به نزدیکترین مضرب 2 که از خودش بیشتر است گرد می‌کند .

=CEILING(2.4;2) à 4

FLOOR

 عدد 24 را به نزدیکترین مضرب صحیح 7 که از 24 کمتر است گرد می‌کند

=FLOOR(24;7) à 21

EVEN

 عددی را به نزدیکترین عدد زوج بعداز خودش گرد می کند.

=EVEN(2.5) à 4

ODD

 عددی را به نزدیکترین عدد فرد بعد از خودش گرد می‌کند.

=ODD(1.5) à 3

TRUNC

 قسمت اعشاری را حذف می‌کند.

=TRUNC(8.9) à 8

MROUND

 عددی را به مضربی دلخواه از عدد دیگر، گرد می‌کند.

=MROUND(10;3) à9

INR

جزء صحیح یک عدد را می‌دهد.

=INT(5.4) à 5

 

کاربرد ROUNDUP : فرض کنید که قرار است امتیاز افرادی را پس از یک سری محاسبات بدست آورید، اگر شما از تابع ROUND استفاده کنید ، چون اعداد 12.44 را تا یک رقم اعشار می‌کند 12.4  ، ممکن است فردی اعتراض کند که امتیاز او نادیده گرفته شده است ! آنهم در حد یکصدم ! بنابراین بهتر است از ROUNDUP استفاده کنیم که در هر حال امتیازی بیشتر را محاسبه می‌کند.

 

کاربرد CEILING  : این تابع کار مثل راننده تاکسی‌ها عمل می‌کند، یعنی اگر کرایه شما 118 تومان شده باشد ، می‌گویند 125 تومان یا مثلا اگر کرایه شما شده باشد 233 تومان می‌گویند 250 تومان . البته این به این دلیل نیست که می‌خواهند پول بیشتری بگیرند ! بلکه به خاطر این است که در سیستم پولی ما 25 تومانی داریم اما 33 تومان نه. در واقع آنها عدد را به اولیل مضرب 25 بالاتر از کرایه گرد می‌کنند و ما در اکس می‌نویسیم :

=CEILING(کرایه , 25 )     J

-------------------------------