These are projects posted by the students of Dr. Gove Allen at Brigham Young University. These students have taken one semester-long course on VBA and generally have had no prior programming experience

Wednesday, April 16, 2014

Software License Mapping


Executive Summary

I recently worked for a company called Anglepoint, and one of the main things we did was software license management consulting. We worked with large software vendors, and analyzed how their customers were using the software licenses they had purchased. We would compare records of what software a company had purchased with records of what they were actually using and look for differences where they were either over or under using the licenses they owned.
One of our biggest clients was IBM. A major problem we faced in analyzing IBM licenses was simply matching up the records of software that had been purchased with records of what software was installed within a company. The names of the software were often different between the sources of data. The names were often similar enough that a person could identify which ones matched, but it was difficult for a computer to do so. To complicate things, many software packages were bundled with other titles, so a purchase of one piece of software could mean that the company effectively had licenses to install and use a number of other software titles as well. Traditionally this was a task that required many hours of labor for each project, and required extensive knowledge about specific IBM software.

Our solution was to create VBA macros and forms that would simplify and automate this process as much as possible. We created scripts that would gather data from web sites and store it in a database, perform matching between data sources, analyze the data, and build the reports. This report focuses only on the data mapping portion of the overall effort. I designed and built this part of the system to make the analysis process faster and require less specific knowledge of IBM products.

Econ 110 Independent Study Tool

Executive Summary:

I am BYU’s Independent Study (IS) Economics 110 online course grader. BYU’s IS grading website effectively manages students homework grades, but does not allow for test scores to reflect the grading curve while recording the actual score. For example, if a student scores an 80% on the test and this grade corresponds to a letter grade of a B+, the IS website forces you to record either the 80% or the B+, but not both. In order to provide the students with feedback on their progress in the course we record the B+ on the website and manage the test scores through an excel workbook. My project seeks to automate and simplify this workbook to make the grading process easier. With my project the grader now interacts with the workbook through a customized ribbon.

The grader has three options in the ribbon: add a new student, add a new grade, and grade a test. These buttons allow the grader to complete the three main tasks involved in IS grading. After a student has both midterms completed and the final completed, the “check website” button on the add grade user form checks the IS website to see if that student has completed and received a passing grade on the other 13 assignments. If they have completed the assignments, then the grader can click the “Final Email” button and this sends an email to Dr. Kearl with all the information to submit the final grade. The grader is then prompted to move the completed record to the “Complete” tab. This system allows the grader to spend his time grading the students work and not spending time figuring out how to record scores.

Links to Project:

http://files.gove.net/shares/files/14w/bhirst/Hirst_Project_Write_up.pdf
http://files.gove.net/shares/files/14w/bhirst/ISYS_110_Grades.xlsm

Excel Tutorial Framework

There are many people that are not familiar with Microsoft Excel and are unaware how much Excel can help them perform their daily tasks.  Just the simple act of opening Excel can scare some away, simply because of the strange interface and multitude of buttons and options that are available to the user.  While some may be able to get past this first shock of information overload, history and experience tells us that many who are intimidated are unable to get past this experience.

The purpose of my project is to help facilitate the process of learning new items and tasks in Excel, but in a non-traditional manner: I made an easy-to-use and heavily commented framework in VBA that should allow anyone with a basic knowledge of VBA to create and modify their own lessons.  By creating this framework, I hope to enable anyone to make a tutorial on any Excel topic simply and easily, even if they have very little VBA knowledge.  It can be as simple as writing a paragraph, to as complex as having actions and validations for each step of the tutorial. 


To provide an example, I created a simple tutorial that is intended for absolute beginners to Excel, which walks the user through a couple of basic Excel terms, and also contains several actions and a validation.

Using VBA to Create a Randomized Seat Assign System

One of my classmates in high school is now working as a teacher in a high school in Beijing, China. In high schools of China, students stay in the same classroom all the time. And there is a teacher assigned to each class as a “head teacher”, who take cares of disciplines and administration within the class.
My friend is also assigned to a class, but he is very frustrated with the seats assigning issue. There are 70 students in his class, and he needs to make sure their seats change in a weekly basis, to make sure they could know each other better and change their views to the blackboard. However, some students felt unfair as they were always assigned to the back seats or front seats. Some students who are short want to seat at the front more often because they feel their sights are interfered by tall students sitting in front, while students with bad eye sights want to sit at the front more often to have a better view of the note on the blackboard or slides. My friend felt like he could hardly satisfy everyone’s needs. So he asked me for help.
Basically I developed a random seats assignment system using VBA, so that equity is ensured with randomization. However, there are times when a few students have special circumstances to accommodate. So after assigning the seats randomly, he can still make changes by clicking to a student that needs to change seat with another student. Just with a single click, he could make slight changes. Another feature is that there is a user form coming out for him to choose how he wants to make combination of rows and columns, either 7*10 or 10*7.
Because my friend is Chinese and all students in his class has Chinese names, I developed the system all in Chinese for his convenience. However, I will translate some important issue into English during the report. 

Project and Report:
http://files.gove.net/shares/files/14w/gongn/Gong_Nan_Final_Project.xlsm
http://files.gove.net/shares/files/14w/gongn/Gong_Nan_Final_Project_Report.pdf

Using VBA to Create an Adaptive Review for Chemistry Students

I am currently working part-time as a Chemistry teacher for a high school in Salt Lake City, and as part of this job, I have noticed two challenges I faced as a teacher: 1. It is difficult to match the material students are studying to their capabilities 2. Being grossly outnumbered by students, it is hard as a teacher to provide quick feedback for students so that they can correct errors in understanding early on. 


To solve those challenges I have created a review tool which quizzes students on different types of Chemistry problems; when students give their answers to these questions, they immediately see whether they got the problem right or wrong, and then they are randomly assigned another problem to work on.  As they continue answering problems, the program begins weighting the problems in such a way that the problems the student struggles with are asked more frequently than the ones the student has already mastered.  After the student finishes her study session, her results are automatically posted to a google doc so that the teacher can now tell which areas his students are struggling in so that he can better use time set aside in class to review in the most efficient manner possible.

workboook: http://files.gove.net/shares/files/14w/mikedoug/Review.xlsm
write up: http://files.gove.net/shares/files/14w/mikedoug/Writeupforreals.pdf

Using VBA to Model the Forecast of a Bond’s Cash Flows

Business description. Beneficial Financial Group is a life insurance company headquartered in Salt Lake City that is currently in “run-off”—the company no longer issues insurance policies, so it is gradually shrinking rather than growing.  As such, Beneficial is currently focusing its efforts on servicing the policies it has already issued, which mainly entails investment and actuarial management.  One of the reasons that Beneficial has gone into run-off is that mortgage-backed securities (MBS) had made up such a large proportion of its investment portfolio at the time the 2007-2008 financial crisis hit. After the almost-overnight drop in value of the MBS market in 2007, companies like Beneficial struggled to survive if they had been improperly assessing the risk of their MBS portfolio (as nearly the entire market had been). Since the crisis, Beneficial has been working to improve its procedures as much as possible to understand the true risk inherent in the mortgage-backed assets it holds.

Overview of problem and VBA solution. One of the procedures Beneficial is currently undertaking to assess the risk of its MBS portfolio is to dissect its mortgage-backed bonds into the expected cash flows of the underlying loans that back the security.  This is done in an effort to better understand the individual loans that account for the profitability of the bond, something that had been largely neglected prior to the crisis. The process of dissecting these bonds, however, can be somewhat tedious.  Each bond has loan data contained in a workbook unique to the bond. Beneficial keeps another workbook which contains a model for forecasting the cash flows of the loans underlying the bond. The firm keeps a third “master” workbook which opens the bond workbook, extracts the loan data, opens the model workbook, and exports the loan data into the model to forecast the cash flows. 


In order to relinquish the need to keep track of so many workbooks, analysts at Beneficial are interested in simplifying the process by maintaining one workbook for each bond/model combination.  They have sent me the workbook of a manufactured housing bond they hare holding, along with the model workbook and the master workbook.  The master workbook contains a macro that had been previously written by analysts to calculate the principal and interest (P&I) from an individual bond’s loan data, but no code had been written to convert the P&I into a forecast of cash flows classified by loan type (which they currently use the model workbook to create). I have written code which calls the macro that calculates the P&I, creates a cash flow forecast identical to the one created by the model workbook, and then pastes it into new sheets in the bond workbook.  The code I’ve written eliminates the need for the model and master workbooks altogether. Furthermore, I’ve created a tab in the ribbon with buttons to simplify the analysis process, along with an add-in that Beneficial can use to access the model from any workstation. 

Internship / Job Hunt Networking Tracker

The pain that his workbook is trying to solve, is that while searching for internships and jobs, it is difficult for many students to keep track of who they have talked to, what was discussed, and what the next steps were.

Many students use a simple spreadsheet to track this type of information. But, really, it would behoove the user to be able to track multiple interactions per contact. So, a one-to-many relationship would be more realistic and usable than the standard "flat" spreadsheet.

This project aims to assist in this by:

  1. Generating information about a student's Top 10 Companies 
  2. Tracking key contacts within each of the company.
  3. Tracking interactions with each contact including next steps. 
Identifying the Top 10 Companies & Generating information.
I created a number of functions that accept a company's name and return a URL to key pieces of data. The sources included Google News, Glassdoor, company 10-k reports, and earnings calls. The 10-k and earnings call functions required a stock ticker symbol, so I created another function that did a best-guess translation of a company's name to return the stock symbol. 

Once these functions were created, I ran them through a loop for each of the company names, and displayed them as link to the user. If the links were not found (for example, if a company is not publicly traded and therefore has no earnings call) then the relevant cell remained blank. 

Tracking Key Contacts
Using a user form, I created a way for students to put in key name and contact information. The users can add, edit and change the currently selected user from the form. The exceptional part of this form is that it has the ability to display the various interactions that a person has had over time. Using a list box, dates of interactions are displayed. When the user clicks on a date, the details of the form are pulled from the Interactions spreadsheet and displayed in the form. This provides at a glance information about the entire contact history. It also has a button that opens a second user form to log another interaction. 

Tracking interactions:
Interactions are tracked in a separate worksheet and indexed using an Interaction ID and a corresponding Contact ID.

Future Development:
Some good next steps for this project would be to generate a suggested list of contacts using LinkedIn and the BYU Alumni database. In thinking of this, I created a secure password store using a "VeryHidden" worksheet and an encryption algorithm to secure the passwords.  This means that the passwords are not displayed to the average user. 

http://files.gove.net/shares/files/14w/lbradyda/BYUMBANetworkingInternshipHunt.xlsm




LDS Publishing weekly Project Report
Noah Robins
IS-520




1 Executive summary of the project

The director of LDS publishing wants a report every week on the progress of the ongoing work that he oversees. He oversees several Initiatives which have projects run by project managers who oversee product managers who work on activities within a project.
            Director -> Project Manager -> Product manager
            Initiatives -> Projects -> Activities
At each level there is data keeping track of Expenses, Budget, feedback petition information and Percent completion.  The Director ask me to make weekly report from three sources of data. The business problem is to automate the process of merging the three sources together and reporting at each level the budget, Feedback loop duration, and percent completion.

Sub-tasks to be completed:
1.     Gather data from the three sources
2.     Put the three data sources in one workbook
3.     Clean the data for merging
4.     Merge the three sources
5.     Make finical report
6.     Make feedback duration report
7.     Make Percent completion of project/activity reports

Write-up:
 http://files.gove.net/shares/files/14w/nrobins/IS-520_Write-up.pdf
Code:
 http://files.gove.net/shares/files/14w/nrobins/LDS_Publishing_IS-520.xlsm
Video of data collection:
http://files.gove.net/shares/files/14w/nrobins/IS-520_Final.avi
*supporting documents not available for the public

Tuesday, April 15, 2014

20-Year Financial Plan -- David Sheffield

Executive Summary

With graduation comes a job, money, and financial decisions. To prepare myself, I programmed an Excel workbook to help me make some of the most difficult financial decisions: How much should I save for missions, education, 401K, and insurance? What type of mortgage should I get? Home much money can I reasonably live on? How long will it take to reach financial independence? This Excel workbook is the result of a great deal of research, calculations, programming, blood, sweat, and tears. I believe that it was worth it because it will lead me to make better financial decisions over the course of my life.

The numbers in this spreadsheet have been changed to preserve confidentiality:
http://files.gove.net/shares/files/14w/das88/DavidSheffield_20-yr_Financial_Plan.xlsm

The following document is a copy of my write up for the VBA project:
http://files.gove.net/shares/files/14w/das88/DavidSheffield_FinalProject_WriteUp.pdf

Simply Invoicing


Simply Invoicing


Simply Invoicing is a project designed specifically to help assist the functions of Steadman Sound Inc.

Background of Project: My father is an extremely hard working business owner who does not like to paperwork. This project is to allow him to quickly complete and email his invoices on the job.

Purpose of Project: to create an easy to use method for creating, saving, and emailing invoices from Steadman Sound Inc. The entire process should be completed in minutes.

Overview of the Project: This project uses a custom tab to open and input data. It uses two forms that are most automatically filled out. The forms are then documented, saved as pdfs, and emailed out to clients as attachments. The information can be saved for a later email date.
http://files.gove.net/shares/files/14w/sshalae/Steadman_Sound_Invoice__presentation.xlsm
http://files.gove.net/shares/files/14w/sshalae/Simply_Invoicing.docx
http://128.187.60.137:9000/shares/files/14w/sshalae/Simply_Invoicing.pdf

Blog Archive