Total Pageviews

Tuesday, 11 September 2018

TRANSPOSE



எக்செலில் நாம் தயாரித்த தகவலை பத்தியில் இருப்பதை வரிசைக்கும் , வரிசையில் இருப்பதை புத்திக்கும் மாற்ற வேண்டிய சூழ்நிலை ஏற்படலாம்.  அம்மாதிரியான நேரத்தில் Transpose என்ற செயலி மிகவும் உபயோகமாக இருக்கும். உதாணரமாக கீழ் இருக்கும் தகவலைப் பார்ப்போம்.












இத் தகவலை பத்தியில் இருப்பதை வரிசைக்கும், வரிசையில் இருப்பதை புத்திக்கும் மாற்ற,   அத் தகவலை தேர்வு செய்து நகலெடுக்கவும். (Ctrl C or Right Click - Copy). பின்பு தேவையான இடத்தில் கர்சரை வைத்து right click - paste special என்பதை தேர்வு செய்யவும் (படத்தினை காண்க)













வரும் உரையாடல் பெட்டியில் உள்ள TRANSPOSE என்ற மெனுவிற்கு பக்கத்தில் உள்ள பெட்டியில் கிளிக் செய்ய்யவும்.  இப்போது நீங்கள் எதிர் பார்த்தமாதிரி தகவல்கள் மாறி இருக்கும். (SHORT CUT KEY:  Ctrl+Alt+V, E  OR  Alt+E+S, E)






இம்மாதிரியான பயன்பாடு சாதாரண தகவல்களுக்கு மட்டும் தான் பயன்படும்.


இந்த தகவல் ஒரு TABLE ஆக இருந்தால் அதை copy செய்து past special மூலமாக பத்தியை வரிசையாக மாற்றுவதோ அல்லது வரிசையில் உள்ள தகவலை பத்தியில் மாற்றுவதோ முடியாது.  அதற்கு பதில் TRANSPOSE என்ற செயலியை array formula வாக பயன்படுத்தவேண்டும்









மேலேயுள்ள டேபிள் A3 லிருந்து D6 வரை இருப்பதாக கொள்வோம்.  இத் தகவல் எங்கு மாற்றி வரவேண்டுமோ அங்கு கர்சரை வைத்து, தேவையான பத்திவரிசைகளை தேர்ந்தெடுத்து  =TRANSPOSE(A3:D6) என்று தட்டச்சு செய்து உடனே Enter Key யை தட்டாமல் Ctrl + Shift + Enter  இந்த மூன்று பட்டன்களை ஒரு சேர தட்டவேண்டும்.  இப்போது நீங்கள் நினைத்த ரிசல்ட் கிடைக்கும்.









Monday, 25 June 2018

கேள்வி - பதில் பகுதி - 2


கேள்வி:   நான் எக்செல்லில் பணி  செய்யும்போது விவரங்கள்
                      இல்லாமல் காலியாக விடப்படும் செல்களில் 0 என்ற
                      மதிப்பை கொண்டுவர முடியுமா ?

பதில் :       முடியும்.   முதலில் எக்ஸெல் OPTION ல் கீழ் கண்டவாறு
                       SETTING செய்யவும்.









































































பின்பு கீழ்வரும் MACRO வை ஒரு MODULE லில் இணைத்துக் கொள்ளவும். (முன்பே ஒரு MODULE இருந்தால் அதில் இதை பிழையின்றி தட்டச்சு செய்யவும்.  இல்லையெனில் புதிதாக இணைக்கவும். எப்படி இணைப்பது என்பது கேள்வி - பதில் பகுதி - 1 ல் விவரிக்கப்பட்டுள்ளது.).

Sub fillo()
Dim cell As Range
For Each cell In Selection.Cells
If cell.Value = "" Or cell.Value = " " Then
   cell.Value = 0
   End If
Next
End Sub

---*---


கேள்வி:  எக்செல்லில் பணி செய்யும்போது மேலே  போக PAGE UP 
          KEY யையும் கீழ்  பக்கம் போக PAGE DOWN KEY யையும் 
          உபயோகிக்கிறோம்.  பக்கவாட்டில் இடது பக்கம் போகவும் 
          வலது பக்கம் போகவும் ஏதாகிலும் SHORT CUT உண்டா ?

பதில்:     உண்டே!  
ALT + PAGE DOWN KEY ஐ அழுத்தினால் வலது பக்கமாக ஒரு பக்கம் 
நகர்த்தலாம்.
ALT + PAGE DOWN KEY ஐ அழுத்தினால் இடது  பக்கமாக ஒரு பக்கம் 
நகர்த்தலாம்.

                                                        ---*---







Sunday, 17 June 2018

MACRO - 4




மெசேஜ் பாக்ஸ் மூலம் பயனாளருக்கு எப்படி தகவல் அளிப்பது, தகவலை  ஒரு வரிக்கு மேல் புது வரிகள் அமைத்து கொடுப்பது எப்படி என்பதை பற்றி பார்த்தோம்.  இப்போது மெசேஜ் பாக்ஸ் மூலம் கொடுக்கும் தகவலுக்கு ஒரு விடையை பயனாளரிடமிருந்து எப்படி பெறுவது என்பதை பார்ப்போம்.   மெசேஜ் பாக்ஸ் மூலம் வெறும் தகவலை மட்டும் அளிக்கும்போது மெசேஜ் பாக்ஸின் SYNTAX பின்வருமாறு அமையும்.

MSGBOX  "PROMPT "


மெசேஜ் பாக்ஸ் மூலம் ஒரு விடையை பெறும்போது SYNTAX பின்வருமாறு அமையும்

.

MsgBox(prompt[,buttons][,title][,helpfile,context])


இங்கு நாம் கொடுக்கும் தகவல்கள் அத்தனையும் ( ) அடைப்பானுக்குள் அடங்கவேண்டும்.

இதில்

PROMPT:   என்பது பயனாளரிடம் நாம் எதிர்பார்க்கும் தகவல்.  (TEXT STRING).   இது நிச்சயமாக அளித்தேயாக வேண்டும். இத்  தகவல் 1024 எழுத்துக்களுக்கு  மிகாமல் இருக்கவேண்டும்.

BUTTONS :  விடையை கொடுக்க அழுத்த வேண்டிய பட்டன்கள் .  இவைகள் பட்டனின் வகை, அதில் இடம்பெற வேண்டிய ஐகான்கள்.  பட்டன்கள் அமைத்தே ஆகவேண்டும் என்ற கட்டாயமில்லை. நாம் எந்த பட்டனையும் தெரிவிக்கவில்லை என்றால் அது DEFAULT ஆக VBOKONLY என்ற பட்டனை எடுத்துக்கொள்ளும்.




பட்டன் வகைகள்






TITLE:  மெசேஜ் பாக்ஸில் (TITLE BAR) தலைப்பில் காட்டப்படவேண்டிய சொற்கள் .



இப்போது முன்பு பயன்படுத்திய உதாரணங்களில் சில மாற்றத்தை ஏற்படுத்தி மெசேஜ் பாக்ஸின்
  உபயோகங்களை பார்ப்போம்.




மேலுள்ள உதாரணத்தில் வண்ணப்பூச்சு உள்ள இடங்களை கவனிக்கவும்.  முதலில் DIM ANS AS INTEGER  என்று உள்ளது.  இது நாம் வாங்கப் போகும் விடையை சேமிப்பதற்க்காக உருவாக்கப்பட்ட ANS  என்ற மாறிலி (VARIABLE ) ஆகும். அந்த மாறிலி எத்தகையது என்பதை INTEGER என்று வரையறுக்கிறோம். INTEGER என்றால் முழுமையான எண்களைத்தான் சேமிக்கும். அதில் வரும் பின்னங்களை (DECIMALS) விட்டுவிடும்.  எண்களின் வரையறைகளை பின்பு பார்ப்போம்.

அடுத்ததாக ANS= MSGBOX("DO YOU WANT TO CONTINUE", VBYESNO, "REPONSE PLEASE") என்று கொடுக்கப்பட்டுள்ளது.  மெசேஜ் பாக்ஸ் மூலம் என்ன விடையை பெருகிறோமோ அது ANS என்ற மாறிலியில் சேர வேண்டும் என்பதால் ANS = என்று கொடுக்கப்பட்டு MSGBOX ம் கொடுக்கப்பட்டுள்ளது.  முதலில் உள்ள MSGBOX  வெறும் தகவலை அளிப்பதால் அதை அடைப்பானில் கொடுக்காமல் வெறுமனே கொடுத்துள்ளோம்.  இதில் தகவலை கொடுத்து ஒரு விடையை பெற வேண்டியுள்ளதால் MSGBOX  CONTENT ஐ அடைப்பானில் கொடுக்கிறோம்.

MSGBOX ( உள்ளே உள்ள "DO YOU WANT TO COTINUE" என்பது பயனாளரிடம் எதிர்பார்க்கும் விடையாகும். (PROMT). இது எழுத்தில் (TEXT)ல் இருப்பதால்." " க்குள் கொடுக்கப்பட்டுள்ளது. அடுத்தாற்போல் வரவேண்டிய பட்டன் எது என்பது VBYESNO என்று கொடுக்கப்பட்டுள்ளது. அடுத்ததாக MSGBOXன் தலைப்பில் வர வேண்டிய TITLE கொடுக்கப்பட்டுள்ளது.  இதனுடன் ஒரு ஐகானையும் சேர்த்தோமானால் வரக்கூடிய MESSAGE BOX கீழுள்ளதுபோல் தோற்றமளிக்கும்.



MSGBOX("DO YOU WANT TO CONTINUE", VBQUESTION+VBYESNO,
"REPONSE PLEASE")














அடுத்ததாக IF ANS = 7 என்று கொடுக்கப்பட்டுள்ளது. இதை IF ANS = VBNO என்றும் எழுதலாம் ,

இந்த மெசேஜ் பாக்சில் உள்ள இரண்டு பொத்தான்களுக்கும் தனித்தனியான மதிப்பு உள்ளது. எந்த பொத்தானை அழுத்துகிறோமோ அதற்கு தகுந்தாற்போல் அந்த மதிப்பு ANS என்ற மாறிலியில் சேமிக்கப்படும். எந்தெந்த பட்டனுக்கு  என்னென்ன மதிப்பு என்பதை பட்டியலிடப்பட்டுள்ளன.  















......................
 

Saturday, 19 May 2018

MACRO - 3 FOR.....NEXT LOOP AND MESSAGE BOX



MACRO - 3 FOR.....NEXT LOOP AND  MESSAGE BOX

முதல் இரண்டு அத்தியாயங்களில் MACRO என்றால் என்ன, அதில் உள்ள OBJECTகள், எப்படி செலக்ட் செய்வது, அவற்றிற்கு உள்ளீடு அளிப்பது,  உருவாக்கும் MACRO வை பதிவு செய்வது, அதற்கு குறுக்கு வழி (SHORTCUT) அமைப்பது மற்றும் எங்கு சேமிக்கவேண்டும் என்பதையெல்லாம் பார்த்தோம்MACRO உள்ள கோப்புகளை சேமிக்கும்போது .XLSM என்ற (EXTENSION TYPE) வகையில் சேமிக்க வேண்டும்.

முதல் அத்தியாயத்தில் FOR ..... NEXT என்று ஒரு LOOP உபயோகித்துள்ளோம்.  அதைப்பற்றி கொஞ்சம் பார்க்கலாம். ஒரு செயல்முறை திருப்பி திருப்பி செய்ய வேண்டுமென்றால், அதுவும் எத்தனை முறை செயல்பட வேண்டும் என்று நிச்சயமாக தெரியும்போது FOR ...... NEXT  லூப்பை உபயோகிக்கலாம்.

ஒரு ஐம்பது  செல்களில் ஒன்று, இரண்டு என்று வரிசையாக எழுத வேண்டும். இதை பின்வருமாறு எழுகலாம்.

A10 ல் ஆரம்பிப்போம்.
SUB SLNO()
[A10].VALUE=1
[A11].VALUE=2
[A13].VALUE=3
[A14].VALUE=4 
' இதைப்போல் 50 மதிப்பு வரும் வரையில் வரிசையாக எழுதவேண்டும் 
END SUB


SUB SLNO()
' USAGE OF FOR AND NEXT
[A10].SELECT
FOR I = 1 TO 50
ACTIVECELL.VALUE=I
ActiveCell.Offset(1, 0).Select
NEXT I
END SUB 



முதல் MACRO வையும் இரண்டாவது MACRO வையும் கவனியுங்கள்.  முதலில் உள்ளதில் 50 வரிசைகள் எழுத வேண்டியுள்ளது.  இரண்டாவதில் ஐந்து வரிசைகளில் அடங்கிவிட்டது.  மறுபடியும் மறுபடியும் செய்ய வேண்டிய வரிகள் லூப்பில் உள்ளன. எவ்வளவு தடவைகள் செய்யவேண்டும், எதிலிருந்து ஆரம்பிக்கவேண்டும் என்பவைகள் நிச்சயிக்கப்பட்டுவிட்டன.

மேலே இரண்டாவது வரியின் ஆரம்பத்தில் ஒற்றைக்குறி ( ' ) இட்ட வரியை கவனியுங்கள்.  ஒரு வரியின் ஆரம்பத்தில் ஒற்றைக்குறியிட்டால் அவ்வரியானது நிரலல்ல, ஒரு குறிப்பு என்று குறிக்கும் (not a program statement, it is a remark - for programmer's information). இது பயனீட்டாளர்களுக்கு உதவுவதற்காக .

  ActiveCell.Offset(1, 0).Select  

தற்போது இருக்கும் நிலையிலிருந்து எந்த பக்கம் நகரவேண்டும் என்பதைக் குறிப்பத்து தான்    



ActiveCell என்பது தற்போது கர்சர் இருக்குமிடம்.

Offset(1, 0) என்பது கீழே ஒருவரிசை நகரவேண்டும்.  பத்தி அதே பத்தியில்தான் இருக்க வேண்டும்.

தற்போது A10 ல் இருக்கும் கர்சர் ஒரு வரி கீழே அதாவது A11 க்கு வரும்.

Offset(-1, 0) அதே பத்தியில் ஒரு வரி மேலே 
Offset(1, 1)  அடுத்த வரியில் அடுத்த பத்தியில் (வலது பக்கமாக)
Offset(0, 1) அதே வரியில் வலது பக்கமாக ஒரு செல் நகர 
Offset(-10, 1) வலது பக்கமாக ஒரு செல் நகர்ந்து பத்து செல்கள் மேலே போகவேண்டும் 

மற்றுமொரு உதாரணத்தைப்  பார்ப்போம்.


TABLE ஒன்று தயார் செய்வோம்.

Sub TABLES()
[A1].Value = "T  A  B  L  E  S"
[A2].Select
For I = 1 To 10
ActiveCell.Value = I & " * " & 1 & " = " & I
ActiveCell.Offset(1, 0).Select
Next I
End Sub 

A1 ல் "T  A  B  L  E  S" என்பதை உள்ளீடாக கொடுக்கிறோம்.
A2 வை செலக்ட் செய்கிறோம் 

FOR LOOP ஐ ஒன்றிலிருந்து பத்து தடவை கீழே உள்ள கட்டளைகளை செய்யச் சொல்கிறோம்.

தற்போது இருக்கும் செல்லின் மதிப்பை  I & " * " & 1 & " = " & I என்று எழுதப் சொல்கிறோம்.

(அதாவது முதல் சுற்றில் I =1, & ( & என்பது அத்துடன் என்று பொருள்படும்.  முதலில் இருப்பவற்றோடு  பின் வருபவற்றையும் சேர்த்துக்கொள் .  ஆக 1 * 1 = 1 என்றும், இரண்டாவது சுற்றில் 2 * 1=2......) ( & இதை concotanete operator என்று சொல்வார்கள்.)


இதை செயல்படுத்தினால் (RUN ) 

என்று வரும்.


இந்த MACRO வை கொஞ்சம் மேம்படுத்துவோம் 

பத்து TABLES எழுதுவோம்.


Sub TABLES()
[A1].Value = "T  A  B  L  E  S"
[A2].Select
For i = 1 To 10
For j = 1 To 10
ActiveCell.Value = j & " * " & i & " = " & i * j
ActiveCell.Offset(1, 0).Select
Next j
ActiveCell.Offset(-10, 2).Select
Next i
End Sub

விளக்கம் :
•Sub TABLES()
•[A1].Value = "T  A  B  L  E  S"
•[A2].Select
For i = 1 To 10   (ஒன்றிலிருந்து பத்து வாய்ப்பாடுகள் )
For j = 1 To 10   (ஒவ்வொன்றிலும் ஒன்றிலிருந்து பத்து வரை )
ActiveCell.Value = j & " * " & i & " = " & i * j
ActiveCell.Offset(1, 0).Select   (தற்போது இருக்கும் செல்லிலிருந்து ஒரு செல் கீழ் பக்கமாக நகர )
Next j (வாய்ப்பாட்டுக்குள் அடுத்த எண்ணிக்கைக்கு செல்ல) 

ActiveCell.Offset(-10, 2).Select (வாய்ப்பாடு முடிந்தவுடன் பத்து செல்கள்மேல்பக்கமாகவும் இரண்டு செல்கள் வலது பக்கமாகவும் நகரவேண்டும்.)
Next I  (வாய்ப்பாடு முடிந்து அடுத்த வாய்ப்பாட்டிற்கு செல்ல )
End Sub






MESSAGE BOX



MESSAGE BOX என்பது பயனாளருக்கு தகவல் அளிக்கும் ஒரு பெட்டியாகும். சில சமயத்தில் பயனாளருக்கு தகவலை அளிப்பதுடன் அது சம்பந்தமாக எழும் கேள்விகளுக்கு விடையைப்பெறவும் MESSAGE BOX பயன்படுகிறது.

ஒரு சிறிய உதாரணத்தைப் பார்ப்போம். 


மேலே வாய்ப்பாடு தயாரிக்க ஒரு மேக்ரோ எழுதியுள்ளொமல்லவா, அதில் ஒரு சிறிய மாற்றம் செய்வோம்.  நான்காவது வரிக்கு அடுத்தாற்போல் MSGBOX "GOOD MORNING "   என்று எழுதி, புதியதாக ஒரு வரி சேர்க்கப்பட்டுள்ளது என்பது நமக்கு தெரிவதற்காக  ' A NEW LINE ADDED HERE என்று ஒரு குறிப்பையும் சேர்ப்போம்.

Sub TABLES()
[A1].Value = "T  A  B  L  E  S"
[A2].Select
For i = 1 To 10
MSGBOX "GOOD MORNING "   ‘ A NEW LINE ADDED HERE
for j = 1 To 10
ActiveCell.Value = j & " * " & i & " = " & i * j
ActiveCell.Offset(1, 0).Select
Next j
ActiveCell.Offset(-10, 2).Select
Next i
End Sub




இப்போது இந்த மேக்ரோவை செயல்படுத்தி பாருங்கள் (RUN ) செயல்படுத்த மேலே STANDARD TOOLBAR ல் உள்ள முக்கோண குறியிட்ட பட்டனை அழுத்தவும்.









ஒவ்வொரு அட்டவணையும் அச்சு செய்வதற்கு முன்பு message box ல் கொடுத்த தகவல் நமக்கு தோற்றமளிக்கும். அதற்கு ok என்ற பட்டனை அழுத்தினால்தான் அடுத்த செயலுக்கு (வரிக்கு) நகரும்.


இப்போது கொடுத்த வரியிலேயே மற்றொரு மாற்றத்தை செய்வோம்.  MsgBox "GOOD MORNING என்றுள்ளதற்கு பக்கத்தில்  - Now i am going to type table no." & i என்பதை தட்டச்சு செய்யுங்கள். (MsgBox "GOOD MORNING - Now i am going to type table no." & i) . இதில் & i  என்பது மேலே நாம் பயன்படுத்திய மாறிலியில் (variable) உள்ள மதிப்பை காண்பிக்க.




மேலே காணப்படும் Message Box ல் இருக்கும் செய்தியை இரண்டு வரியில் குறிப்பிடுவோமா ? புது வரி சேர்க்க வேண்டுமென்றால் & vbnewline என்று எழுதி, பின் இரண்டாவது வரியில் என்ன வரவேண்டுமோ அதை & (ambersand )  குறிக்கு பின் சேர்க்க வேண்டும்.

அதாவது 

MsgBox "GOOD MORNING -" _
& vbNewLine & "Now i am going to type table no." & i

என்று இருக்கவேண்டும்.  மேலே காணப்படும் வரிகளில் முதல் வரியில் கடைசியில் _ எழுதப்பட்டுள்ளது. ஒரு வரியில் ஒரு statement ஐ (நிரலின் ஒரு வரியை ) முடிக்கமுடியாமல் அடுத்த வரியிலும் தொடர்ந்தால் முதல் வரியின் கடைசியில் _ (underscore ) தட்டச்சு செய்யவேண்டும். (தொடர்கிறது என்று பொருள்)




தொடரும்...........