I'm extremely new to excel's VBA and to the idea of macros. My boss has asked me to try to figure out a way to figure out a solution to this problem:
"Each semester we are given an excel sheet with rows upon rows containing a students name, the class name (ACC, FIN, BIO...), course number (101 or 102...) and the section number 5162 (a unique identifier). Each semester teachers request the roster sheets for their classes. We typically have to create a new workbook with that professors name, then by hand copy and paste each row of one section of their class onto one sheet naming it accordingly ex BIO 102-5623, then the next section of that class into the next sheet and so on. We would like for you to figure out a way to automate this process so that we spend less time creating whole new workbooks and sheets and then copying and pasting all of the rows."
I figure that excel's VBA feature would be a good way to do this, but I've never used it before. I've done a lot of research on the tool since I started the project and have been watching a ton of tutorials, but I'm not sure if this will take several different macros to perform or if maybe this would be better to do in something like Access, or if this is possible at all?
I think it would be easier to do in Access.
The roster and classes already acts much like a database, and you have a unique identifier in that section number. Doing so with access or any kind of database would allow you to execute something like
select studentName from rosterDatabase where classId = 12345
and that would result in all the students in said class would populate the list.
Related
I am attempting to find a solution with either excel or visual basics.
I have an expanding column of remarks on multiple sheets that I need to search through for a keyword (I’m using the word “change” or “chang” to capture “changing” when needed)
When this keyword is found, I need it to give back the cell address, along with a defined name I’ve set up (one for each sheet).
I was able to make a table on a “summary sheet” to include the “new comment”, address, and defined name, and it works well enough. My only concern now is if I add a new row and therefore add a new comment in the column on one sheet, I will have to go back and add a row to my table, and make sure the address and defined name are also corresponding to that “new comment”. This will get very messy and errors can occur, especially since I could have 20+ sheets.
So far all I have been using is excel formulas. But I have also been playing around with excel macros to try and accomplish this (with no luck).
Any help would be greatly appreciated! And I of course can explain this better if need be.
Edit: I added a picture of the general basis of what I’m trying to accomplish. I can’t add the code I’ve been trying as it’s on my work laptop- so I made a simple mock-up of my sheet to include here. I took pictures of the highlighted cell in sheet 1 to show the formulas, and then a picture of sheet 2.1
I am trying to create a spreadsheet that allows me to keep track of a customer with general details (name, phone number, address...) bu then also keep a very specific list of all the products they have ordered. I want to be able to run reports on frequency of all details including what has been ordered. I have a bit of programming experience but not a whole lot of Excel experience so I know how I would write a program but not exactly how to do it in Excel. My thought is to have one sheet dedicated to the general specifications of the customer and then a second sheet that keeps track of the orders per customer. I want to be able to click on a hyperlink or something of the sort that will take me to the second sheet and automatically fill in the customer name. I want the first sheet to have the guest information running horizontally in rows but then the second sheet would have the names running horizontally on the top row and the orders would go down each column under the names. This way it keeps all of my sheets tidy and allows for me to run the type of reports I'm looking for. The main issue I'm having is figuring out a way to create a link that will do the action I want. I understand how to program but don't know Visual Basic very well but if someone was able to offer a similar code I would be able to decipher it and change it to my needs. Or if someone has a more efficient thought on how to set up the spreadsheet I'm all ears! Thanks a ton!
what you need is to create a pivot table with a data model.
The instructions are longer then what it actually takes!
here are few tutorials about the subject:
youTube video
MSDN instructions
PS don't write code in Excel unless strictly necessary. If it's a data issue, use data model
I have a spreadsheet that is used to track audit scores for 9 different departments in a plant. The 9 departments are broken down to 117 different area locations. Once a month I add a new column and update the scores. What I would like is a seperate sheet for each department with the audit scores updating automatically when I import the original data in. I'm new to VBA programming and this may be over my head a little bit, is there a way to do this?
Why not using a pivot table in each tab ?
You'll only have to use the "actualize" command once ( Data-->Refresh all) whenever you're adding a column.
The thing you have ot be careful with is to set-up you master table as a list (Home tab-->Format as a table command ) or else the pivot table will not take account of an added new column.
Without seeing the actual data and the format the it is currently in...
Assuming that you make a separate sheet for each department each with a row corresponding to its respective area...
I would utilize a class to hook the application's events and update each sheet on the Worksheet_Change event. Chip Pearson provides an excellent example of this concept here and I'm sure that a cursory search of SO will turn up quite a few examples as well.
From that point it is a matter of identifying the imported data and it's corresponding location in the workbook.
If you have an example I would be happy to look at it...
My current employer (to remain nameless) has a collection of incredibly sophisticated Microsoft Excel 2003 worksheets (developed by contractors, also to remain nameless).
The employer is replacing the Excel-based solution with a SalesForce-based solution (developed by other contractors, likewise to remain unnamed). The SalesForce solution is also very complex using dozens of related objects and "Dynamic SOQL" to contain the data and formulas which previously was contained in the Excel-based solution.
The employer's problem, which has become my problem, is that the data from the Excel spreadsheets needs to be meticulously and tediously recreated in .CSV files so it can be imported into SalesForce.
While I've recently learned I can use CTRL-` to review formulas in Excel, this doesn't solve the problem that variables in Excel have cryptic names like $O$15. If I'm lucky, when I investigate $O$15, I'll find some metadata explaining if n cells up and/or some other data m cells to the left, and/or (in rare instances) there may be a comment on the cell.
Patterns within the Excel spreadsheets are very limited, rarely lasting more than 6 concurrent rows or columns and no two sheets which need to be imported have much similarity.
Documentation of all systems are very limited.
Without my revealing any confidential data, does anyone have any good ideas how I might optimize my workflow?
It's not clear exactly what you need to do: here are 3 possible scenarios, requiring increasing knowledge of Excel.
1. If all you want is to convert the Excel spreadsheets into CSV format then just save the worksheets as CSVs.
2. If you just want the data and not the formulae then it would be simple (using VBA) to output anything that isn't a formula (the cell.Formula won't start with =).
3. If you need to create a linkage excel-->csv-->existing Salesforce objects/SOQL then you will need to understand both the Excel Spreadsheets and the Salesforce objects/SOQL that have been created. This will be difficult unless you have good knowledge and experience of Excel and also understand what the salesforce App requires.
Brian, if you're still working on this, here's one way to approach the problem. I use this kind of process often for updating data between SFDC and marketing automation apps.
1) Analyze the formulae that you're re-creating in Salesforce.com to determine what base data fields you need (stuff that doesn't have to be calculated from something else.
2) Find those columns/rows in your spreadsheets and use Paste Special -> Values in a new spreadsheet to create an upload file with values instead of formulae that you need for each data area (leads, prospects, accounts, etc.)
3) If you have to associate the info with leads or contacts or accounts and you have already uploaded or created those records in Salesforce.com, be sure to export them with their ID numbers. That makes it easy to use the vlookup formula in Excel to match up fields that you need to add and then re-upload the data into Salesforce.
Like data cleaning, this can be a tedious process. But if you take it step by step it shouldn't be too hard. Good luck.
Okay, Im setting up a spreadsheet that will track employee progress. Im new to vba and macro programming in excel but am not foreign to programing in general. Any assistance would be greatly appreciated. What I want to do is as follows.
Start off with 3 sheets (roster, log, Total) The log sheet will have all the tracking metrics of each employee.Total will Total each employees log sheet together and roster will be a dynamic employee list. As a new entry is created in roster then I want to copy the log sheet and rename it by the name put into roster and add the new (named) sheet into the Totals calculations.
For arguments sake just say that each log sheet only has a numerical value in a1 and total is just tallying all log sheets a1 fields. Roster contains just a first name in column A and no other data. (Given direction I should be able to expand the concept to a more intricate set of sheets.
Additionally it would be interesting to be able to remove a name from roster and have the said log sheet be deleted and removed from the totals formula... :D
Again Thanks for any assistance.
I have seen people try to make excel work like a database and it is ultimately doomed to failure. As this is a green field project I would start it right and use some sort of database. The choice is yours depending on your skillset, hardware available and what it will be used for. A good starting point would be good old MS Access, it is quick to learn and in the right hands very powerful. If it is going to be higher use then maybe look to a server based data store such as SQL server and write the front end in anything you want (Access, vb.net, asp.net etc)
The point here is choosing the right tool for the right job, spreadsheets have their place but databases they are not