<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-13403973</id><updated>2011-12-14T21:50:26.010-05:00</updated><title type='text'>ExtremeCPA - Technology for Business</title><subtitle type='html'>Devoted mostly to help CPA's and other financial experts understand and use technology better.  The blog will try to offer tips, help, and advice.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-13403973.post-113753586659829201</id><published>2006-01-17T16:45:00.000-05:00</published><updated>2006-01-17T17:11:06.770-05:00</updated><title type='text'>Binomial Pricing Model for Options</title><content type='html'>&lt;span style="font-size:85%;"&gt;Hi all! I hope you all had fantastic Holidays and a wonderful New Year. As I mentioned in my previous post, I'm going to try to be better about writing more starting now and moving forward. We'll see how it goes :) The title for this post is a little misleading. I recently read an article in the JoA about how to create a &lt;a href="http://www.aicpa.org/pubs/jofa/dec2005/baril.htm"&gt;binomial pricing model&lt;/a&gt; for options in Excel. I've recently been thinking about how technology can influence the way you solve a particular problem; furthermore, I've been thinking about how uninformed I was (an still am) in regards to technology and you never really know how much you don't know.&lt;br /&gt;&lt;br /&gt;In reality, I'm sure quite a few of us feel that we are quite well versed insofar as technology is concerned. I myself felt this way several years ago when I began to learn VBA and Excel. I found that I could do things that many other people could not simply because I could write VBA code. I then found myself turned on my head when I found out about &lt;a href="http://www.python.org"&gt;Python &lt;/a&gt;(an open source scripting language). I realized that not only was I pretty clueless, but I would have never even realized how clueless I was if I was not introduced to the language in the first place. This turned me on to looking into other technology areas that further enhanced my skills. I am not, however, quite as naive as before and I realize that I still have a *long* way to go before I would consider myself well versed in technology.&lt;br /&gt;&lt;br /&gt;You are probably wondering, why am I writing this now? Well, just to let you know that I think you should be learning more and more each and every day. Perhaps try to tackle a new project by using VBA if possible wherever you can. There are several fantastic tutorials about VBA at places like &lt;a href="http://www.mrexcel.com/articles.shtml"&gt;Mr. Excel&lt;/a&gt;, &lt;a href="http://www.beyondtechnology.com/vba.shtml"&gt;Beyond Technology&lt;/a&gt; and others. Just do a Google search for VBA tutorials (or something similar) and you'll find a ton of resources. You can always write and ask me if you have help as well. I started off by talking about a binomial pricing model for options in Excel, and I'll conclude by giving you an example of something you can create using VBA once you become fairly proficient. I've tried to document the code although I'm sure there will be questions if you start reading it. Not all of the functionality from the article is included in the model (specifically, it was too time consuming trying to figure out how to include the ability to calculate an early exercise if the option reaches a certain multiple using VBA), but much of the functionality is there. Feel free to try it out and give comments ... click &lt;a href="https://www.andrew.cmu.edu/user/kevinr/BinomialOptionModel.xls"&gt;here to get the model&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Again, this is simply in the hopes of inspiring some of you to learn more about technology.  Good luck!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-113753586659829201?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/113753586659829201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=113753586659829201' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/113753586659829201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/113753586659829201'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2006/01/binomial-pricing-model-for-options.html' title='Binomial Pricing Model for Options'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-113607016543516455</id><published>2005-12-31T17:59:00.000-05:00</published><updated>2005-12-31T18:02:45.436-05:00</updated><title type='text'>Sorry for not writing and Happy New Year!</title><content type='html'>&lt;span style="font-size:85%;"&gt;Hi all!  I'm really sorry that I've been such a bad blogger and have not gotten anything up on the site lately.  School was breaking my back for a little bit, and looking for a job has been very time consuming as well.  Anyway, I just wanted to drop a quick line and say Happy New Year to everyone!  I'm going to try to get more posts going over the next month or so, so I can hopefully get back on track.  In the mean time, I'm *more* than open to ideas for posts.  Have something you want to learn about and you think I might know?  Drop me an &lt;a href="mailto:kevinryan@cmu.edu"&gt;email &lt;/a&gt;and I'll do my best to write something up for you.  Or just leave a comment and I'll look there as well.  Talk to you soon!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-113607016543516455?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/113607016543516455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=113607016543516455' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/113607016543516455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/113607016543516455'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/12/sorry-for-not-writing-and-happy-new.html' title='Sorry for not writing and Happy New Year!'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-112861949236534253</id><published>2005-10-06T13:10:00.000-04:00</published><updated>2005-10-06T13:33:37.246-04:00</updated><title type='text'>Google Office?</title><content type='html'>&lt;span style="font-size:85%;"&gt;As you are all most likely aware, I'm an open source aficionado and enjoy using technologies like &lt;a href="http://www.linux.org/"&gt;Linux&lt;/a&gt;, &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;, etc.  I read an &lt;a href="http://slashdot.org/article.pl?sid=05/10/06/1250215&amp;amp;from=rss"&gt;article&lt;/a&gt; today that announced how Google and Sun have teamed up to "Declare War on Microsoft".  &lt;a href="http://www.forbes.com/businesstech/2005/10/05/microsoft-google-sun-microsystems-cx_ld_1005microsoft.html"&gt;Forbes&lt;/a&gt; doesn't seem to think that this is too much of a threat to Microsoft, but I'll let you be the judge of that one. A little more background may be in order.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sun.com/"&gt;Sun Microsystems&lt;/a&gt; created the infamous Java programming language that has become widely prevalent today. Google, I'm sure, requires no introduction. What Sun has also built, that you may not be quite aware of, is &lt;a href="http://www.openoffice.org/"&gt;OpenOffice&lt;/a&gt;. This is a suite of office tools similar to Microsoft Office, yet it is open source and therefore FREE. You can typically purchase support from Sun or other consultants on a fee basis, or you can use the online community message boards to try and get your questions answered. I would think, though, that if you don't have any problems with MS Office, you probably won't have any with OO (OpenOffice). Included in the standard distribution are Calc (think: Excel), Writer (think: Word), Impress (think: PowerPoint), and Draw (think: Paint on steroids).&lt;br /&gt;&lt;br /&gt;You may be thinking, "But all my historical documents are in MS Office format, I couldn't just give that up!" Fret not, because OO can typically read and write documents that were originally written in the MS Office Suite without a hitch. The only problem that I've run into is scripting in VBA. OO will simply ignore VBA code, as it doesn't (as far as I can tell) know how to interpret it correctly. But I seem to think that very few people will have an issue with this, as most Word documents and Excel spreadsheets go without the added complexity of VBA code. If you have macros that you use in Excel, they will also not work in OO, BUT you can recreate your macros in OO fairly easily.&lt;br /&gt;&lt;br /&gt;All in all, I try to use OO whenever possible, although I do have quite a few VBA procedures that I use often that hinder this approach. I would highly recommend you try out OO, and keep an eye out for the Google-Sun combination, as it could prove to be a viable alternative for the more costly, proprietary MS Office. Check it out if you get a chance!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-112861949236534253?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/112861949236534253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=112861949236534253' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112861949236534253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112861949236534253'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/10/google-office.html' title='Google Office?'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-112740192506441385</id><published>2005-09-22T10:55:00.000-04:00</published><updated>2005-09-22T11:21:01.700-04:00</updated><title type='text'>Word &amp; Excel - Creating Standard Letters with Mail Merge</title><content type='html'>&lt;span style="font-size:85%;"&gt;Well, I began writing the second piece to my &lt;a href="http://extremecpa.blogspot.com/2005/09/scripting-languages.html"&gt;last article&lt;/a&gt; about scripting, but I soon realized that I'm going to have to make it a three-part series to do it justice, and so I haven't had the time to finish it up. But I thought I'd write another post in the meantime. Have you ever had to write a "standard" letter (such as a confirmation letter or a bill to clients who are overdue)? Typically, it involves figuring out who to send the information to and then writing up all those letters. A simple technique you can use instead involves the use of Microsoft Word's "Mail Merge" feature. I'll walk you through a simple example.&lt;br /&gt;&lt;br /&gt;To begin, you might want to start with a blank document. Once opened, go to "Tools | Letters and Mailings | Mail Merge", and choose "Letters" to continue on. The next step you could use templates or from an existing document (if you've already started to write the letter), but in this case we simply want to start with the "current document". In the next step, you are asked to select the recipients of the letter. If you feel comfortable selecting queries or tables from an ODBC connection, this is the most direct route. Otherwise, if you have a dB that allows you to download your information into Excel (or the information is already there), you can just select the Excel file ... or if you're writing to a set of clients about a new project, maybe you want to use "Outlook contacts" if you use Microsoft Outlook. We'll choose "Use an existing list" and then click the "Browse" link to find an Excel file. You should already have a list started*, and when you browse to that file you should select the sheet or named range with the contact information (and any other relevant information you want to include) from the "Tables" option that pops up. Typically, Word is pretty good at figuring out what information should be included.&lt;br /&gt;&lt;br /&gt;The next step is to click the "Next" link at the bottom, and begin to write your letter. You'll write your letter as you normally would, but instead of writing any particular piece of information that is only associated with a particular person or company (like their account balance), you can choose to insert fields (either "standard" items, or you can be more flexible and click the "More items..." link) and precisely define what fields should be inserted where. Once you have completed the letter, you are then able to preview an example letter in the next step. If you need to make corrections, simply go back with the "Previous" link at the bottom.&lt;br /&gt;&lt;br /&gt;The final step is to create the new document. If you want the option to edit particular letters for some reason, you can choose "Edit individual letters..." and it will create a new document with all the letters filled in. Alternatively, you can simply choose to "Print" the document and all will be printed out with the appropriate information filled in.&lt;br /&gt;&lt;br /&gt;I hope this provided you with insights on how to use this feature.  Good luck!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;*NOTE: You should have a list in Excel with no extra columns and no blank rows. You should also include a "header" column that describes each column in the list, so that you can easily select which fields to insert when writing the letter. Finally, if you name the entire list (select the entire list in Excel and hit Ctrl-F3, then name it something like "Contact_Info"; see &lt;/span&gt;&lt;a style="font-style: italic;" href="http://extremecpa.blogspot.com/2005/06/named-ranges.html"&gt;here &lt;/a&gt;&lt;span style="font-style: italic;"&gt;for more information about naming ranges and cells), you can EASILY select it when Word prompts you which table to select.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-112740192506441385?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/112740192506441385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=112740192506441385' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112740192506441385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112740192506441385'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/09/word-excel-creating-standard-letters.html' title='Word &amp; Excel - Creating Standard Letters with Mail Merge'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-112597716850587723</id><published>2005-09-05T23:02:00.000-04:00</published><updated>2005-09-05T23:29:46.550-04:00</updated><title type='text'>Scripting Languages</title><content type='html'>&lt;span style="font-size:85%;"&gt;Well, hello to everyone! I'm so sorry I haven't written in so long. The wedding was fantastic, but took up a lot of my time :) Then, once I got back I was thrown right in the mix of school activities again, so even though I haven't written I've been a busy man.&lt;br /&gt;&lt;br /&gt;I just wanted to write a quick post about scripting languages. You may have heard the term "scripting" before, or maybe not. If you know VBA (which some of my other posts have touched on), then you know scripting. But I also thought it might be a nice chance to step away from MS Excel for a moment and see what other technologies you can use to help do your job more effectively.&lt;br /&gt;&lt;br /&gt;Script languages, as defined by &lt;a href="http://en.wikipedia.org/wiki/Main_Page"&gt;Wikipedia&lt;/a&gt; are:&lt;br /&gt;&lt;/span&gt; &lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;computer programming languages initially designed for "scripting" the operations of a computer. Early script languages were often called batch languages or job control languages. A script is more usually interpreted than compiled, but not always.&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;You really don't have to know what that means. All it says is that these tools are meant to help you control your environment more powerfully than, say, Excel. You can do many (if not all) the things you can do with a regular programming language: loops, conditional execution, etc. Why do I think you might be interested in this? Let's say that every month you are performing some type of reconciliation, and the file you reconcile to comes in a text form, but &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; a normal delimited file (i.e., not csv, not tab-delimited, etc.). You can see that it is clearly structured, but not in a way that Excel can recognize. In the past, you may have used a program like ACL or IDEA to define "records" and that are then processed to give you a comma-delimited file or something similar. This is where scripting could save you time and money.&lt;br /&gt;&lt;br /&gt;The languages that I'll refer you to are (in order of my personal preference):&lt;br /&gt;&lt;/span&gt; &lt;ol&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.perl.org/"&gt;Perl&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.ruby-lang.org/"&gt;Ruby&lt;/a&gt; (never used, but heard it is very good)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;span style="font-size:85%;"&gt;You might even consider SQL a scripting language, but it is limited to databases whereas the 3 previously mentioned are ubiquitous. Also, as I mentioned before, VBA is a scripting language but it is limited 1) to the Microsoft environment and 2) Typically to Microsoft programs like Excel or Word (although you can use it elsewhere, I never have).&lt;br /&gt;&lt;br /&gt;All 3 programs are open source (and therefore free as in beer and free as in speech), so you will never be limited to a vendor and you will never be constrained by a licensing cost or issue. And all 3 languages are EXTREMELY powerful. The task previously mentioned could easily be handled by anyone with at least a minimal proficiency in any of the three languages. After downloading (e.g., Python) you can write a program to open a text file and process every line in the file as follows:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;f = open("file_name", "r")&lt;br /&gt;for line in f:&lt;br /&gt;  #process line&lt;br /&gt;f.close()&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;This would indicate the filename was "file_name", the "r" indicates that you want to open the file for "r"eading, and the "f" is simply a variable. The "for line in f:" is a looping construct that reads every line in the file. The "#process line" would be replaced by some suitable code that would process each line (perhaps adding a total to the previous total, etc.). Finally, you close the file with f.close().&lt;br /&gt;&lt;br /&gt;As you can see, with just a little more cursory knowledge, you can do some pretty powerful things fairly easily. I'll continue sometime next week with an additional discussion of Python, but I suggest that you check out the websites above if you are at all interested thus far. Don't be intimidated! It is fairly easy to get going, once you give it a shot. Good luck!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-112597716850587723?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/112597716850587723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=112597716850587723' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112597716850587723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112597716850587723'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/09/scripting-languages.html' title='Scripting Languages'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-112378257610161704</id><published>2005-08-11T13:29:00.000-04:00</published><updated>2005-08-11T13:55:59.376-04:00</updated><title type='text'>Table of Contents in Excel with VBA</title><content type='html'>&lt;span style="font-size:85%;"&gt;Hi all. Again, SO SORRY I haven't written. This week has been crazy preparing for the wedding and whatnot. Anyway, wanted to drop everyone a quick line before I go away this weekend for the honeymoon since I haven't written in over a week. I saw a &lt;a href="http://www.aicpa.org/pubs/jofa/aug2005/tech_qa.htm#CREATE"&gt;response&lt;/a&gt; in the technology section of the JoA about creating a table of contents in Excel. It shows you how you can (quite easily) create a link to another part of the workbook using only Excel. It can be quite useful to link different parts of the document (for example, to link a summary sheet to the detailed breakdown). Read the article to get the gist of how this can be accomplished. I only want to take it a little further to help summarize MANY more tabs (maybe 20 or more?).&lt;br /&gt;&lt;br /&gt;To do this, we're going to use VBA.  Click &lt;a href="http://extremecpa.blogspot.com/2005/07/amortization-table-using-vba-our-first.html"&gt;here&lt;/a&gt; to get a brief overview of VBA, or simply read on as this won't be too complicated. In the article, the author describes how to create a link so we won't repeat it here. But, instead of just creating the link, record a macro first and stop it after the link has been created. You can view the VBA code behind how Excel created the link by hitting Alt-F11 and finding the module where you saved the macro. Once you look this over, you'll see that it adds a hyperlink with some specific information. We can customize what Excel did to come up with this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Sub Create_TCs()&lt;br /&gt;Set toc = ActiveWorkbook.Sheets("TOCs") ' Place to store the links&lt;br /&gt;i = 1 ' Which cell are we on in the TOCs sheet?  (A1, A2, A3 ... etc.)&lt;br /&gt;&lt;br /&gt;For Each s In ActiveWorkbook.Sheets&lt;br /&gt;    If s.Name &lt;&gt; "TOCs" Then ' Don't create a link to the TOCs sheet&lt;br /&gt;        toc.Hyperlinks.Add Anchor:=toc.Range("A" &amp; i), Address:="", _&lt;br /&gt;            SubAddress:="'" &amp;amp; s.Name &amp; "'!A1", TextToDisplay:=s.Name&lt;br /&gt;        i = i + 1 ' Increment i so that we go to the next cell on the TOCs sheet&lt;br /&gt;    End If&lt;br /&gt;Next s&lt;br /&gt;End Sub&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can copy the code above to your personal macro workbook (click &lt;a href="http://extremecpa.blogspot.com/2005/06/excel-macros.html"&gt;here&lt;/a&gt; to learn about this workbook) and then create a new custom button on your toolbar to automatically call the procedure. It shouldn't be hard to follow. All it does is loop through all the sheets in the active workbook, and creates a link on the "TOCs" tab to all the other sheets in the workbook. NOTE: The "TOCs" tab must already be created &lt;span style="font-style: italic;"&gt;before &lt;/span&gt;the macro is run; otherwise, you'll get an error.&lt;br /&gt;&lt;br /&gt;I hope this helps. If you ever have a workbook with more than 10 or 20 tabs and you want a table of contents page, simply insert a new sheet (Shift-F11) and rename it to "TOCs", then run the macro. All the other sheets will be linked in automatically. Good luck!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-112378257610161704?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/112378257610161704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=112378257610161704' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112378257610161704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112378257610161704'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/08/table-of-contents-in-excel-with-vba.html' title='Table of Contents in Excel with VBA'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-112283193533454854</id><published>2005-07-31T13:11:00.000-04:00</published><updated>2005-07-31T13:45:35.786-04:00</updated><title type='text'>Array Formulas in Excel</title><content type='html'>&lt;span style="font-size:85%;"&gt;Hello all. So sorry I haven't been in touch over the past week. I've been extremely busy planning for the wedding and taking care of other details. Anyway, I wanted to pass along some great information (at least, great to me): I've been included in an &lt;a href="http://accounting.smartpros.com/x49035.xml"&gt;article &lt;/a&gt;on accounting blogs! You might find it useful as many other accounting blogs are on there such as tax, management accounting, etc.&lt;br /&gt;&lt;br /&gt;Anyway, on to today's blog.  A few weeks back, a &lt;a href="http://www.blogger.com/profile/9382230"&gt;friend &lt;/a&gt;of mine had asked about using the SUMPRODUCT function, and I recommended that he use array formulas.  In the comments to that &lt;a href="http://extremecpa.blogspot.com/2005/06/more-database-functionalit_112000220676309625.html"&gt;blog&lt;/a&gt;, I briefly discussed array formulas and I'd like to expand on their usage today. Essentially, you will be interested in using array formulas (CSE's for "Ctrl-Shift-Enter" formulas) when you need to perform extremely complicated formulas on numerous cells/rows and then have a summary function to tie it all together. For example, this &lt;a href="http://extremecpa.blogspot.com/2005/06/more-database-functionalit_112000220676309625.html"&gt;blog &lt;/a&gt;discussed the SUMIF and COUNTIF functions. So you know how to use them, but what if you wanted an "AVERAGEIF"? No such function exists in Excel, but CSE's will help us remedy this. The best way I can describe starting CSE's is by the summary function you want to utilize. In our example, we want to average values if a certain criteria is met. So our formula begins:&lt;br /&gt;&lt;br /&gt;=AVERAGE(&lt;br /&gt;&lt;br /&gt;The next step is to define the criteria. Let's assume we're interested, in averaging sales by state. Now realize that this is a somewhat contrived example. The easiest way to average across states is to do "=SUMIF(State_Col, "PA", Sales_Col)/COUNTIF(State_Col, "PA")". That is, sum the sales by state and then divide by the number of entries identified by COUNTIF. But, it will help us get started. So, to limit on state, we need an "IF" statement to limit our records. So, we simply add the if:&lt;br /&gt;&lt;br /&gt;=AVERAGE(IF(&lt;br /&gt;&lt;br /&gt;Now it gets a little complicated. Essentially, the next part of the formula will define whether or not the number should be included in the CSE. We want to examine each cell in the range of state names. Lets assume that the states are in cells A1:A10 and the corresponding sales figures are in cells B1:B10. The "IF" part of the formula wants to know what to examine, so we enter the state cells:&lt;br /&gt;&lt;br /&gt;=AVERAGE(IF(A1:A10&lt;br /&gt;&lt;br /&gt;Since we want to see if it's equal to a particular value (Pennsylvania, for example), we just enter that:&lt;br /&gt;&lt;br /&gt;=AVERAGE(IF(A1:10="PA",&lt;br /&gt;&lt;br /&gt;The comma is added so that we know what we want to include as the value.  We want the sales figures, so we'll add:&lt;br /&gt;&lt;br /&gt;=AVERAGE(IF(A1:A10="PA", B1:B10))&lt;br /&gt;&lt;br /&gt;It's that simple so far. The last step (after you add the braces as shown above) is to hit "Ctrl-Shift-Enter" to complete the formula. If you don't do the last step, the formula will not work properly. But this will average sales for Pennsylvania as we wished. You may be wondering, what if I wanted to sum New York or Pennsylvania? To do that, you have to modify the "IF" statement. You'll have to add:&lt;br /&gt;&lt;br /&gt;=AVERAGE(IF((A1:A10="PA")+(A1:A10="NY"),B1:B10))&lt;br /&gt;&lt;br /&gt;You'll notice that I added another set of parentheticals and a "+" (plus) sign. This says "If the state is PA OR if the state is NY, show the sales figure". You'll have to consult the help files to find out why we use a plus sign, but know that it works. If you wanted PA sales over $500, you'd have to use a "*" (multiplication) sign as follows:&lt;br /&gt;&lt;br /&gt;=AVERAGE(IF((A1:A10="PA")*(B1:B10&gt;500),B1:B10))&lt;br /&gt;&lt;br /&gt;We limited based on the state as well as the size of the sale. You can get as complicated as you like, stringing results together like this. Remember, though, that you ALWAYS have to finish your formulas by hitting "Ctrl-Shift-Enter".&lt;br /&gt;&lt;br /&gt;For a further discussion of array formulas, check out this &lt;a href="http://www.mrexcel.com/tip011.shtml"&gt;article &lt;/a&gt;that will give you some more insight.  Thanks for reading! &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-112283193533454854?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/112283193533454854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=112283193533454854' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112283193533454854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112283193533454854'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/07/array-formulas-in-excel.html' title='Array Formulas in Excel'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-112191479106595016</id><published>2005-07-21T22:55:00.000-04:00</published><updated>2005-07-22T19:20:57.006-04:00</updated><title type='text'>Connect to the Web from Excel</title><content type='html'>&lt;span style="font-size:85%;"&gt;Did you know that you can connect to the web from Excel? This can vastly improve your life at times, and not do much at all other times. Depending on how easily identifiable the information is, sometimes Excel can handle the challenge while other times it can not. To use this nifty little feature, go to "Data | Import External Data | New Web Query...". Under the import external data menu item, you could also choose to import text files or connect to a database and grab data from there. For this post, we'll stick to the web.&lt;br /&gt;&lt;br /&gt;You might wonder, "Why do I need this feature in Excel?". As of now, it's not tremendously useful in my opinion because most web sites are designed for your viewing pleasure - not for data transfer. This is, however, changing rapidly with the growing use of XML (take, for instance, the &lt;a href="http://www.xbrl.org/"&gt;XBRL &lt;/a&gt;initiative sponsored by powerhouses such as &lt;a href="http://www.pwc.com/"&gt;PwC &lt;/a&gt;and &lt;a href="http://www.deloitte.com/"&gt;Deloitte&lt;/a&gt;). Therefore, it will eventually become very useful I'm sure. As one example of where you might use this technology, let's assume that you keep track of your portfolio in Excel. You're looking to download stock prices for certain tickers every month, so you want to create a macro to do it for you. Don't know about macros? Read &lt;a href="http://extremecpa.blogspot.com/2005/06/excel-macros.html"&gt;here&lt;/a&gt;.  Now that we have that covered, lets try to create our macro.&lt;br /&gt;&lt;br /&gt;To start, we'll begin by simply examining the &lt;a href="http://finance.yahoo.com/"&gt;Yahoo! finance&lt;/a&gt; site, which is the easiest site to accomplish this task (as far as I know). Instead of using your browser, however, we'll use Excel. Go to "Data | Import External Data | New Web Query". From here, type in http://finance.yahoo.com and navigate to the input box asking you for a ticker symbol. Enter whatever symbol you like (perhaps PNC) and hit enter. From here, you'll have to click on the link on the left hand side of the page for "Historical Prices" and you can change the dates as you see fit. Excel will then open up the page with the quotes, which you can click on the yellow arrow to tell Excel that you want to download that table. Viola! Excel will import the table for you and you can change and / or manipulate the data! You can repeat this procedure for any website where you typically download information. To automate the task, simply record a macro before you do it and it will be available for next month. If you get clever, you can manipulate the VBA code and get the dates to change to whatever you want as well. For a primer on VBA, check out &lt;a href="http://extremecpa.blogspot.com/2005/07/amortization-table-using-vba-our-first.html"&gt;this post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Anyway, you can use the previous procedure to create some very sophisticated macros. Alternatively, I've created an Excel add-in to download prices for you that you can get &lt;a href="https://www.andrew.cmu.edu/user/kevinr/YahooDownload.xla"&gt;here&lt;/a&gt;. Try it out - if it doesn't work, write me an email or post a comment and I'll be sure to try and fix it. It was started by creating a macro as recommended in the previous paragraph, and then some heavy lifting was done to make it more flexible and user friendly. To use the add-in, download the file and save it somewhere on your computer. From Excel, go to "Tools | Add ins..." and click "Browse" ... then navigate to wherever you saved the file, click on it and hit "OK". Now you'll have to get a little creative - if you want the tool available whenever you want, right-click on a toolbar and click "Customize". Scroll down to the "Macros" section on the "Commands" tab and drag the custom button to some toolbar (whatever one you want). It should be a smiley face. Once it's placed on the toolbar, right click on the smiley face and click "Assign Macro". The macro name is "Show_Yahoo_Form" and hit enter. Close all dialog boxes, and then you can click on that button whenever you want to download stock prices! If you only want to try it out once, instead of adding a toolbar button just hit Alt-F8 and type "Show_Yahoo_Form" and the form will pop up. Good luck!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-112191479106595016?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/112191479106595016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=112191479106595016' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112191479106595016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112191479106595016'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/07/connect-to-web-from-excel.html' title='Connect to the Web from Excel'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-112121329792956563</id><published>2005-07-18T20:06:00.000-04:00</published><updated>2005-07-18T21:53:13.196-04:00</updated><title type='text'>Scenarios - Providing for Clean "What-if" Analysis</title><content type='html'>&lt;span style="font-size:85%;"&gt;Have you ever developed a spreadsheet whereby you wanted to analyze a few scenarios basically revolving around the same thing (i.e., just running different numbers)? For example, maybe you're analyzing an investment, but you're not quite sure what rate of return you'll get in the upcoming period. Or perhaps you're applying for a loan, and know that you'll get an interest rate between 5.5% and 6.5% (maybe for a new home ... which you could learn how to amortize by reading &lt;a href="http://extremecpa.blogspot.com/2005/07/amortization-table-using-vba-our-first.html"&gt;this&lt;/a&gt; article). Anyway, you need to see if you can afford the interest at the different rates, what your cash flow will be if the investment appreciates by 7% instead of 10%, etc. Instead of manually changing everything over and over, you should learn to use scenarios.&lt;br /&gt;&lt;br /&gt;Instead of me writing an article, however, I'd like to point you to a great article I read some time ago (JoA): &lt;a href="http://www.aicpa.org/pubs/jofa/sep2004/weisel.htm"&gt;Add Muscle to What-if Analysis&lt;/a&gt;. If you have questions, I'd be happy to answer them - but I think the article is really well written so I won't rehash what he said here. Once you complete that article, if you found it interesting there was a follow up article &lt;a href="http://www.aicpa.org/pubs/jofa/mar2005/weisel.htm"&gt;here&lt;/a&gt; which you can also read for more information.  Good luck!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-112121329792956563?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/112121329792956563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=112121329792956563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112121329792956563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112121329792956563'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/07/scenarios-providing-for-clean-what-if.html' title='Scenarios - Providing for Clean &quot;What-if&quot; Analysis'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-112121519686821575</id><published>2005-07-12T20:08:00.000-04:00</published><updated>2005-07-12T20:42:59.636-04:00</updated><title type='text'>Become a Power Internet User with Firefox</title><content type='html'>&lt;span style="font-size:85%;"&gt;I know this is a little bit of a step away from my normal posts, but hear me out.  If you have not yet heard about &lt;a href="http://www.mozilla.org/products/firefox/start/"&gt;Mozilla's Firefox&lt;/a&gt; browser (which I would find very hard to believe, but I suppose it's possible), I'll tell you about it here and how you can harness the power of a better internet by using it. And in case you weren't aware, Firefox is COMPLETELY free! No holds barred.&lt;br /&gt;&lt;br /&gt;To begin, I find that one of the most useful features available is the built in support of RSS feeds. What are RSS feeds? Essentially, they contact web sites that you designate (such as this blog!) and download the latest headers to your bookmarks folder for you to review whenever you like. If you think you'd enjoy the article (as evidenced by the article title), you click on the feed to go directly to it. If not, you do nothing. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;Getting feeds is fairly easy - many of the sites you visit have them enabled by default with a little orange box that says "RSS". &lt;/span&gt;&lt;span style="font-size:85%;"&gt;In Firefox, you can simply click on the box and select "Subscribe to..." and that's it. It will ask you where to store the feed, and you can view it whenever you want thereafter. Sites like the Economist, The Wall Street Journal and others have created feeds - just go out and get them. Alternatively, you can search sites like &lt;a href="http://www.newsisfree.com/"&gt;NewsIsFree.com&lt;/a&gt; to find sites with feeds you might not know about.&lt;br /&gt;&lt;br /&gt;The next topic of discussion is the quickness with which you can navigate if you learn the "quick keys". For example, hitting Ctrl-L will take you to the address bar where you can enter your next destination on the web. If you use bookmarks, you'll soon learn that you can add "keywords" that are essentially short-cuts to the website. For example, I have a bookmark for one of my favorite sites, &lt;a href="http://sourceforge.net/"&gt;Sourceforge.net&lt;/a&gt; (a site with tons of open source software). After I initially created the bookmark, I accessed the properties of the bookmark (by right clicking on it) and added the keyword "sf". Now, when I want to access the site I hit "Ctrl-L sf &lt;enter&gt; &lt;enter&gt;" and I'm there.  Very useful.&lt;br /&gt;&lt;br /&gt;You can also add "quick-searches" which are similar to shortcuts to websites, but they're actually shortcuts to search boxes. So, I go to the SEC's website and find the spot where I can &lt;a href="http://www.sec.gov/edgar/searchedgar/companysearch.html"&gt;search &lt;/a&gt;for company filings. On this page, I want to be able to quickly search company's filings so I right click in the "Company Name" box and choose "Add a Keyword for this search...", and give it a keyword of "sec". Now, whenever I want to search for a company filing, I hit "Ctrl-L sec company_name" and it will automatically search for whatever company I specify! This is much more efficient than going to the website, selecting the box and typing the company name, then hitting enter or clicking the "submit" button. I also have quick searches on Amazon, dictionary.com, etc.&lt;br /&gt;&lt;br /&gt;There is also a built in search toolbar. To quickly access that, you'd hit Ctrl-K and type whatever you're looking for ... and it searches any search engine you specify. By default, I keep mine on Google, but Yahoo!, Amazon, eBay and others are available as well.&lt;br /&gt;&lt;br /&gt;Finally, one last item to whet your appetite is the ability to quickly search a document for a word or link. To do that, you'd simply hit the backslash key ("/") followed by whatever you're looking for in the page. No more Ctrl-F to get some hideous box that gets in your way, blocks your view and makes you do so much work for something so simple. Want to find the next word that matches your criteria? A simple F3 does the trick. This search technique is extremely powerful when searching long documents (like a 10-K) when you may want to search, then read for a little and search again, etc.&lt;br /&gt;&lt;br /&gt;Hopefully this article gave you a reason to at least check out the best browser on the block. Once you use it, you'll never go back. Especially after tabbed browsing (Ctrl-T) which allows you to open up a new site with&lt;span style="font-style: italic;"&gt;out&lt;/span&gt; opening a new window, extensions that allow you to enhance the interface or functionality of the browser, improved security and the host of other things this browser can do that Internet Exploder is no where near doing yet. Check out the download, and then read the website when you want to become a power internet user.&lt;/enter&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-112121519686821575?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/112121519686821575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=112121519686821575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112121519686821575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112121519686821575'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/07/become-power-internet-user-with.html' title='Become a Power Internet User with Firefox'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-112078696116504544</id><published>2005-07-07T21:24:00.000-04:00</published><updated>2005-07-08T19:16:48.516-04:00</updated><title type='text'>An Amortization Table Using VBA - Our First Steps</title><content type='html'>&lt;span style="font-size:85%;"&gt;Well, I hope everyone had a great 4th of July this past weekend! I had a fantastic weekend, and this week is turning out to feel fairly short - so that's always nice. Anyway, let's get to the business at hand. I wanted to pass along a &lt;a href="http://www.andrew.cmu.edu/user/kevinr/Amort_BareBones.xls"&gt;file&lt;/a&gt; to everyone that I created some time ago, and was recently used to create an amortization table for a project I was doing. Actually, this is a slightly modified version with lots of comments and no error checking. For the original (and more robust) file, see &lt;a href="http://www.andrew.cmu.edu/user/kevinr/Amort_Sched.xls"&gt;here&lt;/a&gt;. The first is for learning, the second is for using. The file is very simple, and you should not be intimidated; it simply asks you for a few pieces of information, you press a button and voila! an amortization table is created. I wanted to share this with you because it demonstrates a few techniques we've been discussing over the past month (named ranges and macros) as well as a few other items that I thought you might find interesting (VBA and data validation).&lt;br /&gt;&lt;br /&gt;Lets start with the ones we already know. If you open the file and make cell B4 the active cell, you'll note that in the upper left hand corner of your screen there is the word "Principal" in your menu bar; this was done via named ranges. Furthermore, if you examine the formula in cell B10, you'll notice that there is a (very longwinded) formula containing references to several named ranges: Principal, Int_Rate, and n. This was done to help clarify the formula as well as to make it easier to examine later if I forget how to calculate a loan payment. To understand what each of the named ranges refers to, simply click Ctrl-F3 (if this doesn't work, go to "Tools | Protection | Unprotect Sheet" and then try it again). You can examine what each named range refers to ... you could alternatively pick a cell (again - beware of protection) and type "=Int_Rate" (or whichever item you want to see) and the value will be displayed for you after you hit Enter. Try it out.&lt;br /&gt;&lt;br /&gt;Now, onto the next "easy" topic (before we touch on VBA) - data validation. You'll notice if you try to enter a negative interest rate, the spreadsheet won't allow it. Or if you tried to enter a string such as "Kevin" into the Pymt Freq, it also won't allow it. The underpinnings of this clever little trick lies in data validation. To understand what is allowed and not allowed, pick a cell and go to "Data | Validation" (again, unprotect if necessary). You'll easily follow what is valid information and what is not. Use this technique whenever you update something on a continual basis (weekly, monthly, etc.) and only certain values are allowed.&lt;br /&gt;&lt;br /&gt;Finally, onto the real mean-and-potatoes of the spreadsheet - VBA. If you have no interest in VBA, feel free to stop reading here :) Otherwise, hit Alt-F11 and find the name of the spreadsheet in the data pane to the left (my file is called "Amort_BareBones.xls"). Within that tree, you will find a section called "Modules" - double click on the module named "GenerateSched". What you find in the middle of the screen is all VBA code that dynamically creates the amortization schedule for you. But note, that much of what was done here was accomplished via macros, and then expanded with VBA. To understand the code, simply read the comments - I tried to put a ton in so you could see what was going on. Notice, however, that there are only 8 lines of code (!), and the rest are comments. One of the lines of code isn't even strictly necessary (turning off the cut / copy mode). If you downloaded the more robust file, there are not as many comments, a lot more code, and you will probably not understand much of it if you have little or no experience with VBA. But feel free to try it out, experiment, delete, add, etc. You can always close without saving if you mess up :)&lt;br /&gt;&lt;br /&gt;Hopefully the comments have helped you out, but if you have questions, post comments or send me an email. Comments are much preferred, however, because then everyone gets to see replies and / or questions that will hopefully help them learn. Good luck!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-112078696116504544?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/112078696116504544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=112078696116504544' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112078696116504544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112078696116504544'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/07/amortization-table-using-vba-our-first.html' title='An Amortization Table Using VBA - Our First Steps'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-112060436559547281</id><published>2005-07-05T18:34:00.000-04:00</published><updated>2005-07-05T18:59:25.600-04:00</updated><title type='text'>First Steps w/ SQL (MS Access)</title><content type='html'>&lt;span style="font-size:85%;"&gt;In a recent &lt;a href="http://extremecpa.blogspot.com/2005/06/more-database-functionalit_112000220676309625.html"&gt;post&lt;/a&gt;, I discussed a way to use Excel's SUMIF and COUNTIF formula.  As another reader asked therein, these formulas are not quite powerful enough to handle multiple criteria.  My suggestion to him (and to you as well) was to use a SQL based solution such as Microsoft Access (or an open source alternative such as &lt;a href="http://www.mysql.org"&gt;MySQL&lt;/a&gt;, &lt;a href="http://www.postgresql.org"&gt;PostgreSQL &lt;/a&gt;or &lt;a href="http://www.sqlite.org"&gt;SQLite&lt;/a&gt;).  Note, however, that the open source alternatives while free, do require a larger investment of time and energy in learning the ins and outs of the software.&lt;br /&gt;&lt;br /&gt;Quickly, you might be interested in using a SQL based solution when the data is structured (i.e., all columns and rows - no spaces per se, typically no "custom formatting", etc.).  Direct extractions from systems such as SAP or Oracle are perfect, as those systems ARE databases themselves - and therefore produce data ready to be used by most other dB systems if you export them correctly (text delimited files).  If you can get the data in this format, you can do some extremely powerful things with a database such as summing across categories by date for a very explicit set of circumstances (e.g., within a date range, for a specific sales region, for a particular set of customers, etc.).&lt;br /&gt;&lt;br /&gt;Getting the data into Access is pretty simple, as long as your data is (again) in columns and rows with no "custom formatting".  You'd simply create a new database (you have to create and save a dB before you can proceed), then go to the "Tables" tab (on the left) and finally hit "New | Import Table" ... the directions from there will be data specific, but if you've ever imported data into Excel it is very similar.  If you have problems, feel free to email me and I will try to help.&lt;br /&gt;&lt;br /&gt;Now that you have your data in the dB, you can go to the "Queries" tab (again, on the left) and hit "New | Design View".  This will bring up a dialog asking you what tables you want to query.  Choose the table you just imported, and then click "Close".  In the grid, you can drag fields from the table to the grid to include them in the query.  To filter (e.g. on specific dates), enter them into the "Criteria" section of the grid for the field you are querying on.  If you want to group by (e.g., sales region), right-click anywhere in the grid and click on "Totals".  This will bring up another available row in the grid ("Total:") where you can do "GROUP BY" queries or "SUM" queries, "AVG" queries, etc.  Alternatively, you can use one of the "Wizards" instead of the data grid.  Either way, it's much simpler than creating formulas in Excel once you get the hang of it, and &lt;span style="font-weight: bold;"&gt;much &lt;/span&gt;more powerful.&lt;br /&gt;&lt;br /&gt;I know this was an overly simplistic post and you most likely have tons of questions.  My suggestion would be to simply open up the program and try it out.  Experimenting and using the online help system can take you very far.  I'd be happy to write about specific questions, but I could go on for another 5 pages just on the basics - and I'm sure you don't want that now ;)  Good luck!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-112060436559547281?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/112060436559547281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=112060436559547281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112060436559547281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112060436559547281'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/07/first-steps-w-sql-ms-access.html' title='First Steps w/ SQL (MS Access)'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-112000220676309625</id><published>2005-06-28T19:42:00.000-04:00</published><updated>2005-06-28T19:43:26.763-04:00</updated><title type='text'>More "Database" Functionality in Excel</title><content type='html'>&lt;span style="font-size:85%;"&gt;Continually trying to expand on what I've already covered, I want to discuss some features of Excel that you can use in place of Pivot Tables or VLOOKUP's for simple "queries". In this post, I would like to discuss the "SUMIF" formula and the "COUNTIF" formula. These allow you to get subtotals for a given range without having to manually parse the data. In one of my &lt;a href="http://extremecpa.blogspot.com/2005/06/pivot-tables.html"&gt;recent posts&lt;/a&gt;, I discussed Pivot Tables. These are extremely powerful tools, and I suggest you learn to use them whenever possible. Even so, sometimes you may not want to go through the motions of creating a pivot table for a quick and dirty analysis. In these instances, you can use one of these two formulas.&lt;br /&gt;&lt;br /&gt;The simpler of the two is COUNTIF. You simply type "=COUNTIF(" and then highlight the range you want to evaluate, then a comma followed by the evaluation criteria (typically in quotes). For example, to count the number of cells that equal the word January, you might type "=COUNTIF(A1:A10, "January")".&lt;br /&gt;&lt;br /&gt;The SUMIF is slightly more complicated, but not much. You can keep it just as simple as COUNTIF by using the same methodology. For example, "=SUMIF(A1:A10, "&lt;100")" will sum the values in cells A1 - A10 that are less than $100.  But what if you wanted the sales totals for the month of January?  In this case, you'll have to get a little more complicated by using 2 ranges: 1 for the criteria and 1 for the values.  Following our original example, your formula would be: "=SUMIF(A1:A10, "January", B1:B10)" (assuming month names are in column A and the corresponding sales figures are in column B). Simple, eh?&lt;br /&gt;&lt;br /&gt;You can get more complicated by combining the two. For example, to get the average sale in January, you would use SUMIF followed by COUNTIF, then divide the first result by the second. You get the idea. Good luck!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-112000220676309625?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/112000220676309625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=112000220676309625' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112000220676309625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/112000220676309625'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/06/more-database-functionalit_112000220676309625.html' title='More &quot;Database&quot; Functionality in Excel'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-111979967612878229</id><published>2005-06-26T10:49:00.000-04:00</published><updated>2005-06-26T11:27:56.136-04:00</updated><title type='text'>"Queries" in Excel</title><content type='html'>&lt;span style="font-size:85%;"&gt;In my one of my last &lt;a href="http://extremecpa.blogspot.com/2005/06/named-ranges.html"&gt;articles&lt;/a&gt;, I discussed how and why you might want to use named ranges. In that post, however, I did not discuss one of the main reasons I use named ranges: lookup tables. The heading of this post does &lt;span style="font-style: italic;"&gt;not &lt;/span&gt;relate to the "Data | Import External Data | New ? Query...", but rather to the possibilities relating to quickly looking up a data item in a table. For example, perhaps you have a listing of states such as:&lt;br /&gt;&lt;br /&gt;PA, Pennsylvania&lt;br /&gt;CA, California&lt;br /&gt;FL, Florida&lt;br /&gt;NY, New York&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;If you (for whatever reason) wanted to type PA somewhere in your spreadsheet and have another cell determine what the state name is, you could use a VLOOKUP formula to do just that. If your data were horizontal, such as:&lt;br /&gt;&lt;br /&gt;PA, CA, FL, NY...&lt;br /&gt;Pennsylvania, California, Florida, New York...&lt;br /&gt;&lt;br /&gt;You could instead use HLOOKUP (H for horizontal, V for vertical). We'll discuss VLOOKUP, but HLOOKUP is exactly the same except for the transposition of the table. To use VLOOKUP, three arguments are required and one argument is optional:&lt;br /&gt;&lt;br /&gt;1.  The value you want to look up (PA in our example).&lt;br /&gt;2.  The table where Excel should look for the value.&lt;br /&gt;3.  The OFFSET from the beginning of the table where the value is located*.&lt;br /&gt;4.  Does the value to lookup need to be &lt;span style="font-style: italic;"&gt;exact&lt;/span&gt;, or can it be &lt;span style="font-style: italic;"&gt;as close as possible&lt;/span&gt;?&lt;br /&gt;* This requires a little more explaining. Essentially, you are looking up a value in a given table. When you highlight the table, you will have a certain number of rows (in our example, 4 rows) and you will have a certain number of columns (in our example, 2 columns). This argument is asking for the &lt;span style="font-weight: bold;"&gt;column &lt;/span&gt;in which it should return the value if a match is found (in our example, we wanted the 2nd column so that the lookup would return the name of the state).&lt;br /&gt;&lt;br /&gt;Therefore, to execute the formula we would write "&lt;span style="font-family:courier new;"&gt;=VLOOKUP(A1, States!$A$1:$B$4, 2 FALSE)&lt;/span&gt;". This assumes that we want to look up the name of the state for the abbreviation located in cell A1 from the table on the States sheet, cells A1 - B4, we want it to return the 2nd column (the state names) and the match as to be EXACT. A close enough match would not be appropriate; for example, NY might be closest to NJ (if NY were missing in the table) and that would return New Jersey for NY, where an error would be more appropriate.&lt;br /&gt;&lt;br /&gt;The reason I mention named ranges is because this formula would be much more readable if you changed the "States!$A$1:$B$4" part of the formula to (instead): "State_Table". To do this, you could name the range on the states tab by highlighting cells A1 to B4, hitting Ctrl-F3, and then naming the range "State_Table". Again, the 2 main reasons to use named ranges are: 1) Clarity and 2) Ease of verification.  The formula would now read "&lt;span style="font-family: courier new;"&gt;=VLOOKUP(A1, State_Table, 2, FALSE)&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;This example is fairly simplistic, but a more realistic example might include a listing of stock tickers along with the company name as well as the exchange that the stock is traded on, etc. You could type the ticker (or perhaps the company name is easier to remember), and then have a formula look everything else up for you.&lt;br /&gt;&lt;br /&gt;The few main things to remember are:&lt;br /&gt;&lt;br /&gt;1.  The value you want to look up MUST be in the first column of the table.&lt;br /&gt;2. You can only look up values in columns that are included in the table. For example, you could not look up a third column in our first example as we only included two columns in the formula (recall: "States!A1:B4" references 2 columns - A &amp; B).&lt;br /&gt;3. The last argument of the formula is very important if you want exact values. You might not want exact values, perhaps, if you were looking up bond ratings and ratios between x and y were in this particular rating, and those between a and b are in another rating. Exact lookups, on the other hand, would be required if you were looking up ticker symbols; a "close-enough" match wouldn't really make sense in that case.&lt;br /&gt;4.  If you're using an HLOOKUP formula, the 3rd argument refers to which &lt;span style="font-style: italic;"&gt;row &lt;/span&gt;to return (not which column as in a VLOOKUP).&lt;br /&gt;&lt;br /&gt;Anyway, hope this gives you a little insight into how you can get "mini-queries" in Excel!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-111979967612878229?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/111979967612878229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=111979967612878229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/111979967612878229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/111979967612878229'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/06/queries-in-excel.html' title='&quot;Queries&quot; in Excel'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-111952595354641160</id><published>2005-06-23T07:10:00.000-04:00</published><updated>2005-06-23T07:25:53.550-04:00</updated><title type='text'>Conditional Formatting</title><content type='html'>&lt;span style="font-size:85%;"&gt;Conditional formatting can help you extract information from a spreadsheet visually in more powerful ways that normal "messages". For example, lets say that you are manually updating a balance sheet and you have a formula at the end that compares total assets to total liabilities + owners equity. Normally you will look to this formula and see if you need to make changes (that is, check if the number is -0- or not). Conditional formatting, however, lets you go much further by adding criteria that says "If the value of this cell does not equal -0-, then color the background yellow, the font bold and red, and put a border around the outside." Now it becomes much more clear that something needs to be done to fix the error.&lt;br /&gt;&lt;br /&gt;To use conditional formatting, lets follow along our example. I'll assume you know how to create the balance sheet and parity check. Now all you have to do is go to the cell where the parity check is located (i.e., click on that cell with your mouse). Once the cell is the active cell (note that you should &lt;span style="font-style: italic;"&gt;not &lt;/span&gt;enter the cell, just sit on top of it), go to Format | Conditional Formatting.... Now, in the "Condition 1" (you can add more for more complicated examples), you'll say "Cell Value Is" ... "not equal to" ... 0. This is the check that is performed by the conditional formatter. To change the format when this occurs, hit the "Format..." button and change to your hearts desire. Add and delete scenarios on queue. Now, the cell looks normal except when a non-zero value occurs!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-111952595354641160?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/111952595354641160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=111952595354641160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/111952595354641160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/111952595354641160'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/06/conditional-formatting.html' title='Conditional Formatting'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-111931530000596546</id><published>2005-06-20T20:39:00.000-04:00</published><updated>2005-06-20T20:55:00.023-04:00</updated><title type='text'>Named Ranges</title><content type='html'>&lt;span style="font-size:85%;"&gt;A quick, but powerful tip that I wanted to offer revolves around named ranges in Excel. Whenever you're creating a complicated spreadsheet, keep in mind that you may not always remember exactly what you were doing when you first created your masterpiece. Named ranges can be of tremendous use when you're later trying to rekindle that flame in a last minute effort to get your product out the door. For example, "=Sales-COGS" makes much more sense than "=B4-B7". While this example is clearly contrived and trivial, when you have a 2MB Excel file with 15 sheets, it will not seem so trivial.&lt;br /&gt;&lt;br /&gt;To use named ranges, simply select the cell (or group of cells) that you want to refer to by name, and hit Ctrl-F3. This will bring up a dialog allowing you to name your range. Once saved, you can refer to the name later either by explicitly typing it in a cell, or by hitting F3 and selecting it from the list.  This is also useful when creating &lt;span style="font-family: courier new;"&gt;VLOOKUP&lt;/span&gt; or &lt;span style="font-family: courier new;"&gt;HLOOKUP&lt;/span&gt; formulas (examples to be provided later).&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-111931530000596546?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/111931530000596546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=111931530000596546' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/111931530000596546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/111931530000596546'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/06/named-ranges.html' title='Named Ranges'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-111880089338962307</id><published>2005-06-16T20:56:00.000-04:00</published><updated>2005-06-16T22:37:19.406-04:00</updated><title type='text'>Pivot Tables</title><content type='html'>&lt;span style="font-size:85%;"&gt;A friend of mine has asked me to post on Pivot Tables as they just recently learned about them, and I thought it was a great idea. So you might be asking, "What are Pivot Tables?" Essentially, pivot tables allow you to quickly summarize large data sets (well, semi-large as Excel only allows you to a little over 65,000 records) in 1 or 2 or ... etc. dimensional ways. For example, if you have a set of detailed sales records with dates in one column, sales region in another column, and sales dollars in a third column you could create a report to summarize sales by Quarter by Sales Region to see how your sales staff is doing. You might have months down the left hand side and Sales Regions across the top, with the intersection of these two items representing the sales for that month, that region. To help enhance this post, I've posted a sample file that you can download &lt;a href="http://home.comcast.net/%7Ektr73/pivot_table_data.csv"&gt;here&lt;/a&gt; that contains daily stock prices for 3 stocks (Yahoo, Comcast and Google) for all of 2004. You'll have to download the file as a comma-separated file (csv) and then open it in Excel. Or, you could just copy and paste into Excel and then do a "Data | Text to Columns..." and use a comma as the delimiter.&lt;br /&gt;&lt;br /&gt;Now that we have a baseline to work with, we can start to think about analysis. For example, what if we were analyzing the above three companies (I'm not sure why we would compare THESE 3, but you can use your imagination), and we would like a monthly analysis on the high price for the month, low price for the month, and average price for the month for all 3 stocks. We don't need each separate analysis at once, but we want it to be very simple to see whichever one we want at a moments notice. Pivot tables make this &lt;span style="font-style: italic;"&gt;very &lt;/span&gt;easy.&lt;br /&gt;&lt;br /&gt;To begin, we need to know what month the prices fall in.  It just so happens that I recently wrote an &lt;a href="http://extremecpa.blogspot.com/2005/06/excel-shortcut-keys.html"&gt;article &lt;/a&gt;on extracting information from dates, so we know this will be easy. First, note that the stock prices each have a date in column 2. To figure out what month it's in programatically, we'll use Excel's '&lt;span style="font-family:courier new;"&gt;MONTH&lt;/span&gt;' formula.  Begin by typing in cell D2 the formula &lt;span style="font-family:courier new;"&gt;=MONTH(B2)&lt;/span&gt;, and then copy this down to cell D599 (w/ quick keys: Ctrl-C cell D2, Ctrl-G D599 &lt;enter&gt;, Ctrl-Shift-Up, &lt;enter&gt;). As one last step, let's give the month field a header in cell D1 (we'll call it "Month"). This is necessary for the pivot table. Now that we have whatever month the stock price is in, we'll move on to the real work: the pivot table.&lt;br /&gt;&lt;br /&gt;To create a pivot table, simply highlight the data you would like to include in the new table, and then go to Data | Pivot Table. You will be asked where to select the data from, so we obviously want to select it from an Excel list. You can leave the default on for what kind of report to create (a Pivot table, NOT a pivot chart). Hit next, and on the next screen make sure that the data highlighted is the &lt;span style="font-style: italic;"&gt;entire &lt;/span&gt;list of data that we created (should be from cell A1:D599). After you ensure that the entire list is selected, hit next and then hit finish. By default, a new worksheet should have been created with a placeholder for data items. This is where we define what kind of analysis we would like to perform.&lt;br /&gt;&lt;br /&gt;For this example, I would like to see each company's stock by month. The easiest way to do this is to have the companies across the top, and the months down the left hand side. We'll start with the companies: drag the "Company" field from the "Pivot Table Field List" (see picture below).&lt;br /&gt;&lt;br /&gt;&lt;/enter&gt;&lt;/enter&gt;&lt;/span&gt;&lt;a href="http://photos1.blogger.com/img/13/6435/640/Pivot_table_Field_List.jpg"&gt;&lt;img style="border: 1px solid rgb(0, 0, 0); margin: 2px;" src="http://photos1.blogger.com/img/13/6435/320/Pivot_table_Field_List.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Now that you have the companies across the top, we'll drag the "Month" field to the left where it says "Drop Row Fields Here". We can now add the numbers by dragging the field "Adj. Close*" to the "Drop Data Items here" section. By default, the data will represent the totals for the cross sections - but we want to see the average or the high price, etc. so we have to change this ... the sum of prices for the month of May doesn't really make sense. To do this, double click on the "button" (for lack of a better word - it looks like a button) in the upper left corner of the pivot table called "Sum of Adj. Close*". This brings up a box where you can change the name, but more importantly the function that is performed on the data. For now, we'll choose "Average" but feel free to experiment with "Max", "Min" or anything else you're interested in exploring.&lt;br /&gt;&lt;br /&gt;That's it! If you've gotten this far, you should have a working pivot table as well as a pretty good understanding of how they work. If you wanted to get a little fancy, click on the "Format Report" button on the Pivot Table toolbar and choose a formatting option so it looks a little nicer. I also eliminated the "Grand Totals" for the columns and rows (go to "Pivot Table | Table Options" on the Pivot Table toolbar and uncheck the first two boxes) as totals don't make sense in this instance.&lt;br /&gt;&lt;br /&gt;One last thought: click on the "down arrows" in the table and check and uncheck items at your whim. It will eliminate (or add) items from (to) the pivot table like a filter might.&lt;br /&gt;&lt;br /&gt;As you can see, pivot tables can be a very powerful tool once you master the basics.  Read the help menu or search &lt;a href="http://www.google.com/search?q=pivot+tables+excel"&gt;Google&lt;/a&gt; if you want to learn more.  Hope you liked the article!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-111880089338962307?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/111880089338962307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=111880089338962307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/111880089338962307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/111880089338962307'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/06/pivot-tables.html' title='Pivot Tables'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-111879694021480915</id><published>2005-06-14T20:34:00.000-04:00</published><updated>2005-06-14T22:02:58.090-04:00</updated><title type='text'>Excel Shortcut Keys</title><content type='html'>&lt;span style="font-size:85%;"&gt;Well, I've tried several times to get a "table-like" structure for the shortcut keys I promised, but can't seem to get it to look right. So, unfortunately, I have to provide it in a list instead:&lt;br /&gt;&lt;/span&gt; &lt;ul&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-F3: Define Names&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-X, Ctrl-C, Ctrl-V:  Cut, Copy, Paste (respectively)&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-R:  Copy contents to the RIGHT&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-D:  Copy contents DOWN&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-P:  Print&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-F, Ctrl-H:  Find / Find-Replace (respectively)&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Alt-':  Select style (e.g., number styles, border styles, etc.)&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-G:  GoTo&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;F2:  Edit the current cell&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Alt-F11:  Bring up the Visual Basic Editor&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Alt-F8:  Bring up available macros&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-N:  New workbook&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Shift-F11:  Insert a new worksheet&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-W:  Close the current workbook&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-Z, Ctrl-Y:  Undo, Redo (respectively)&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-1:  Format cells&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;F3:  Enter named range into a formula&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Alt-Tab:  Switch between programs / windows&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-Tab:  Switch between workbooks&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-S:  Save the current workbook&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-PageUp, Ctrl-PageDown:  Go one worksheet UP or one worksheet DOWN (*)&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-Left, Ctrl-Right, Ctrl-Up, Ctrl-Down:  Move to the left, right, top-most, or bottom-most cell in a range&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-Shift-Left, Ctrl-Shift-Right, Ctrl-Shift-Up, Ctrl-Shift-Down: SELECT from the current cell to the left-most, right-most, top-most, or bottom-most of a continuous range.&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-A:  Select all cells in the current sheet&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-Home:  Move to cell A1 in the current sheet&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Shift-Spacebar:  Select Row&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-Spacebar:  Select Column&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-(, Ctrl-Shift-(:  Hide, Unhide Row (respectively)&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl-), Ctrl-Shift-):  Hide, Unhide Column (respectively)&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Ctrl--, Ctrl-+:  Delete or add cells / rows / columns&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;span style="font-size:85%;"&gt;I hope you find the above shortcuts useful. You can use them to become VERY proficient in Excel by combining commands. For example, to delete a row you could combine keys above as follows: select the row by using Shift-Spacebar and then delete the selection by using Ctrl-- ... that's a minus sign.&lt;br /&gt;&lt;br /&gt;You can also learn to quickly access other commands that don't have shortcuts by looking for underlines in the menu bar. For example, I ALWAYS use the "Paste-Special" command, but it has no short-cut key (at least, none that I'm aware of). By looking in the menu bar, you'll see that the E in Edit is underlined. So you can quickly access that with Alt-E. Within the Edit menu, you'll see that the s in Paste Special... is underlined, so you can access that (after hitting Alt-E) by hitting the S. Once the dialog shows up, you'll notice there that many items are underlined; for example, the t in Formats. So to copy a cell and then paste only the formats, the key combinations would be Ctrl-C (to copy), move to the new cell, and then Alt-E-S-T-Enter. That's it. I also found one other site w/ some useful info: &lt;a href="http://http//www.asap-utilities.com/index.php?page=p_sh.php?"&gt;ASAP-Utilities&lt;/a&gt;.  I've used the add in utility before (when I was at Deloitte), and found it useful but I don't use now.&lt;br /&gt;&lt;br /&gt;Anyway, good luck!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-111879694021480915?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/111879694021480915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=111879694021480915' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/111879694021480915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/111879694021480915'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/06/excel-shortcut-keys.html' title='Excel Shortcut Keys'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-111850456167023906</id><published>2005-06-11T11:42:00.000-04:00</published><updated>2005-06-12T22:19:14.186-04:00</updated><title type='text'>Managing Dates</title><content type='html'>&lt;span style="font-size:85%;"&gt;Simply put, dates are an everyday part of our life (pun intended). Even so, I've come across examples where more trouble was used than was necessary to extract or manipulate dates. In this post, I'd like to give an example on how to effectively use dates to create headings (possibly for memos, report headings, etc.).&lt;br /&gt;&lt;br /&gt;To begin, we need a date to work with. We'll start by simply typing in a date (such as "06/11/2004" or "June 11, 2004"); but since this post is about using dates dynamically, we'll get a little more creative as well. Instead, let's say that we want to create a spreadsheet of dates where we start with a particular date (e.g., 12/31/2004) and then we want each subsequent cell to be the end of the following month (following our example, 1/31/2005).&lt;br /&gt;&lt;br /&gt;You could manually do this or get creative with concatenation (which we'll do later in this article), but the simplest way to do this is with Excel's &lt;/span&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;EOMONTH()&lt;/span&gt; function. This function might not be available to you right away; if you can't find the function or it gives you an error, you'll have to go to &lt;span style="font-family:arial;font-size:85%;"&gt;Tools | Add-Ins...&lt;/span&gt;&lt;span style="font-size:85%;"&gt; and then click on the &lt;/span&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;Analysis ToolPak&lt;/span&gt;&lt;span style="font-size:85%;"&gt; add in to make it available.  Now, we can actually write the formula.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Start by typing "12/31/2004" (or one of it's many variants) into cell A1.&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Now, in cell A2, type &lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;=EOMONTH(A1, 1)&lt;/span&gt;&lt;span style="font-size:85%;"&gt;. This tells Excel that we want the end of the month following the value found in cell A1 (1/31/2004). If you wanted quarters (instead of months), you would simply change the 1 to a 3 (i.e., &lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;=EOMONTH(A1, 3)&lt;/span&gt;&lt;span style="font-size:85%;"&gt;).&lt;br /&gt;    &lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Copy the formula from A2 down through A10.&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt;&lt;span style="font-size:85%;"&gt; Note how each date is appropriately 1 month after the previous, and the days are the end of such months. If you copied this down through cell A39, you would even notice that this works for Leap Years as well!&lt;br /&gt;&lt;br /&gt;Now that we have that squared away, we should move on to create headers from all our dates. For example, let's say that we wanted to create text of the form "For the 3 months ended March, 2005", but change the "3", and "March, 2005" to whatever date we happen to be on. This is fairly straight forward once you understand concatenation (i.e., connecting various text items) and the &lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;TEXT()&lt;/span&gt;&lt;span style="font-size:85%;"&gt; function. Concatenation can be accomplished with the "CONCATENATE" function, or by simply using an ampersand ("&amp;"). We'll use the ampersand since it's faster to type.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;To begin, go into cell B1 and begin by typing &lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;=TEXT(A1, "M")&lt;/span&gt;&lt;span style="font-size:85%;"&gt;. This will give you the month extracted from the date (e.g., 12/31/2004 would give you 12) in a number format.&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Move into cell C1 and type &lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;=TEXT(A1, "MMMM, YYYY")&lt;/span&gt;&lt;span style="font-size:85%;"&gt;. This is similar to the last example, but gives you the "long" version of the month (e.g., December) followed by a comma and finally ended by the "long" form of the year (2004).&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Now, move into cell D1 and type &lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;=IF(MONTH(A1)=1,"month", "months")&lt;/span&gt;&lt;span style="font-size:85%;"&gt;. This allows us to appropriately use "month" instead of "months" for January. It works by testing whether or not the month in cell A1 equals 1. If it does, it uses "month"; otherwise, it uses "months".&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Finally, move into cell E1 and type &lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;="For the " &amp; B1 &amp;amp;amp;amp; " " &amp; D1 &amp;amp; " ended " &amp;amp; C1&lt;/span&gt;&lt;span style="font-size:85%;"&gt;. This one is a little more convoluted, but not bad. It simply concatenates the words "For the " to the value found in cell B1 followed by concatenating a space (" "), and so on to the end.&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt;&lt;span style="font-size:85%;"&gt; That's it! Copy the formulas in cells B1:E1 down as far as we have dates and each title will be appropriately updated. Experimenting with the "&lt;/span&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;TEXT&lt;/span&gt;&lt;span style="font-size:85%;"&gt;" function as well as with the "&lt;/span&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;MONTH, YEAR, DAY&lt;/span&gt;&lt;span style="font-size:85%;"&gt;" functions will help you develop more skills to appropriately extract the information you need. You no longer have to manually update ANY heading that can be extracted from dates already present in your spreadsheets!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-111850456167023906?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/111850456167023906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=111850456167023906' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/111850456167023906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/111850456167023906'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/06/managing-dates.html' title='Managing Dates'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-111836760345422206</id><published>2005-06-09T21:24:00.000-04:00</published><updated>2005-06-12T22:18:42.966-04:00</updated><title type='text'>Excel Macros</title><content type='html'>&lt;span style="font-size:85%;"&gt;Well, I've finally gotten into the swing of things at work ... it seems like it's been a long road getting here! I've somewhat forgotten how manual things can be when there's no automation. For example, entering financial information into a workpaper or a model by hand after you've printed out an SEC document. Presumably, it should be straight forward enough where the worker-bee would not have to put too much effort into data entry, but moreso on the analysis of such data. Unfortunately, my thought is that this is the exception rather than the norm (later we'll discuss XBRL which hopes to change this ... so do I!). This is where VBA and macros can help (amongst other tools that I will get into in later posts). In this article, I would like to give a basic example of how to use a macro to your benefit (nothing fancy).&lt;br /&gt;&lt;br /&gt;The thought of this came to mind when I was reading the JoA from this past month. A subscriber had sent in a question with respect to how could he easily put the file name and file path on most of his worksheets. The author astutely noted that since the person wanted this custom footer on most of his worksheets, he should modify Excel's default template (i.e., the empty window that is automatically openned when you hit "&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;File | New&lt;/span&gt;" or hit "&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;Ctrl-N&lt;/span&gt;&lt;span style="font-size:85%;"&gt;"). This was a great answer for someone who wants EVERY new workbook that they create to have this footer - but what if you only wanted it on (for example) half of your worksheets? Then this answer might actually cause more trouble than it's worth; hence, a macro would be much more appropriate.&lt;br /&gt;&lt;br /&gt;To create a new macro, you simply go to "&lt;span style="font-family:arial;"&gt;Tools | Macro | Record New Macro...&lt;/span&gt;". You will be prompted for a name for the macro, a place to store it, an optional shortcut key, and finally a brief description (if you so choose). Typically, you're going to want to store new macros in a "Personal Macro Workbook", which creates a new file that is available whenever Excel is open. You would choose "This Workbook" if you only needed the macro for that particular file (no other files).&lt;br /&gt;&lt;br /&gt;So, now that we know how to create macros, what exactly are they?  To put it simply, they &lt;/span&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;record&lt;/span&gt;&lt;span style="font-size:85%;"&gt; keystrokes that you type &lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;after&lt;/span&gt;&lt;span style="font-size:85%;"&gt; you enter all the above information. So, just so that we can finally get to the end of this article and actually learn something useful, let's create our "add_footer" macro (notice there are various naming rules that you MUST follow or Excel will get very angry). The following are the steps you'll need to follow:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;    &lt;li  style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Tools | Macro | Record New Macro...&lt;/span&gt;&lt;/li&gt;    &lt;li&gt;&lt;span style="font-size:85%;"&gt;Name it "add_footer" (without the quotes) and store it in your "Personal Macro Workbook". We won't add a shortcut key yet (and you'll find out why later), but you can add a simple description if you want.&lt;/span&gt;&lt;/li&gt; &lt;ul&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;NOTE:  remember that everything you type after this point will be recorded in the macro!&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; &lt;li&gt;&lt;span style="font-size:85%;"&gt;Now, to add the footer: simply proceed as normal (using ONLY the keys you would to create the header). That is, go to "&lt;span style="font-family:arial;"&gt;File | Page Setup&lt;/span&gt;" and then go to the "Header/Footer" tab and add your custom footer. You can add "&lt;span style="font-family:courier new;"&gt;&amp;[Path]&amp;amp;[File]&lt;/span&gt;" to get the pathname and file in your current sheet.&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-size:85%;"&gt;Finally, you want to hit the little box in the macro toolbar that came up to "Stop" recording the macro. (Alternatively, you could stop it by going to "&lt;span style="font-family:arial;"&gt;Tools | Macro | Stop Recording&lt;/span&gt;").&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt;&lt;span style="font-size:85%;"&gt; Now that we've created our macro, we want to test it out. Open up a new workbook and then go to "&lt;span style="font-family:arial;"&gt;Tools | Macro | Macros...&lt;/span&gt;" (or just hit &lt;span style="font-family:arial;"&gt;Alt-F8&lt;/span&gt; for faster access) and pick your macro from the list. Then hit the run button, and voila, the footer is there! Note that I didn't add a shortcut key (although feel free to do so if you choose). The reason for this is simple: I use virtually every shortcut key that Excel offers, and I rarely find a macro that is worth overwriting. For example, you might choose &lt;span style="font-family:arial;"&gt;Ctrl-Y&lt;/span&gt; as a shortcut key - but that is for the "Redo" command (after you've "undone" something). If you don't use shortcut keys provided by Excel, you should definitely start; that alone might double you're productivity (complete guess, but might very well be accurate over the long term). Anyway, that's why I usually don't assign shortcut keys to macros.&lt;br /&gt;&lt;br /&gt;If you want to add it to multiple sheets at once, simply click on the starting sheet and then hit the &lt;span style="font-family:arial;"&gt;Ctrl &lt;/span&gt;key before selecting any additional sheets you want to add.  It's that easy!&lt;br /&gt;&lt;br /&gt;Macros can be used for a variety of things, and this is only a VERY simple example. Anything that you do on a repeated basis (e.g., change numbers to Currency with the $ symbol and 3 decimals and then change the font to blue 8pts) can be automated with macros. Once you get used to using macros, you can then move on to more advanced usage via VBA (see the "&lt;span style="font-family:arial;"&gt;Visual Basic Editor&lt;/span&gt;" under "&lt;span style="font-family:arial;"&gt;Tools | Macro&lt;/span&gt;").  We will get to such examples later on ... good luck for now!&lt;br /&gt;&lt;/span&gt; &lt;ol&gt;   &lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-111836760345422206?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/111836760345422206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=111836760345422206' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/111836760345422206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/111836760345422206'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/06/excel-macros.html' title='Excel Macros'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13403973.post-111784826838447291</id><published>2005-06-04T09:18:00.000-04:00</published><updated>2005-06-03T21:37:23.150-04:00</updated><title type='text'>Just Starting</title><content type='html'>&lt;span style="font-size:85%;"&gt;Amazing - I've read others blogs and thought about creating one myself, but never took the time to move forward. If I had known that it would be this easy, I would have started a long time ago!&lt;br /&gt;&lt;br /&gt;Anyway, I'll tell you what I intend to blog about - technology. Primarily related to the accounting and/or finance world. I'm a CPA (hence the title), and just finished reading that CPA's have not moved forward with blogging ... so I thought I would help change that.&lt;br /&gt;&lt;br /&gt;A brief bio - my name is Kevin T. Ryan and I'm 26 years old. I just finished my first year at Carnegie Mellon University's MBA program - what a year! (More on that later). I worked for Deloitte &amp; Touche for 4 years before coming here - 3 years in audit, 1 year in "Dispute Litigation" (fraud investigations and such). During my brief life, I've taught myself several computer languages (about 7 or so), mostly for fun some for work. I have 2 dogs (Jackson and Hunter) and am getting married August 13th of this year!&lt;br /&gt;&lt;br /&gt;I expect that much of my time on this blog will be devoted to tricks that I use either in school (this upcoming fall) or at work. I'll be interning at PNC this summer, so we'll see how often "technology issues" come up that I feel are worthy to post. Hopefully I'll also post whenever I hear something interesting to talk about.&lt;br /&gt;&lt;br /&gt;Anyway, sorry for such a long post - look forward to meeting you!&lt;/span&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13403973-111784826838447291?l=extremecpa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://extremecpa.blogspot.com/feeds/111784826838447291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13403973&amp;postID=111784826838447291' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/111784826838447291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13403973/posts/default/111784826838447291'/><link rel='alternate' type='text/html' href='http://extremecpa.blogspot.com/2005/06/just-starting.html' title='Just Starting'/><author><name>Kevin T. Ryan</name><uri>http://www.blogger.com/profile/03220140410936797384</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://photos1.blogger.com/hello/13/6435/640/Deloitte_Photo.jpg'/></author><thr:total>1</thr:total></entry></feed>
