I have an excel workbook titled "Invoices" that contains invoicing templates for approximately 35 employees. Cosmetically, all of the sheets are the same, except for employer, pay rate, name etc. Each employee has a different sheet within this workbook.
In addition, I get weekly "Master Time card reports" for approximately 120 employees that I must download as a separate excel workbook weekly. Each one of these employees has a separate worksheet. The data from the "Master Time card reports" must be transferred to the templates on the "Invoices" workbook. I have been doing this manually, and have been trying to figure out a way in Excel to dynamically reference the sheets in the "Master Time card reports" workbook from the "Invoices" workbook.
The issue is that the cell addresses on the "Master time card reports" change, depending on a number of factors. One week, the total hours for any particular employee may be in cell "T50", and then the next week they may be in cell "T43" (they never change columns). Also, the names of the sheets may change from "Sheet1" to "Sheet3", because new employees are added, or roll off.
I have done an extensive amount of research and can't seem to find a way to do this.
This is the formula that I am using so far:
=INDIRECT("'[Mastetimecardreports.xlsx]*'!B"&MATCH($D18,[Mastetimecardreports.xlsx]Sheet1:Sheet129!$B:$B,0)+1)
My goal is to enter the name of an employee on their respective worksheet in the "Invoices" workbook and have that name be found in the "Master time card reports" workbook and pull data from the sheet for that respective employee. I want to do this dynamically, as the cell address and sheets will always be changing.
You may greatly benefit from a data architecture restructure. Whenever I read something like Each employee has a different sheet within this workbook, my alarm bells go off. Why would you do that? Why would you spread your data around multiple workbooks and inside those workbooks into multiple worksheets? This is the reason for your difficulty to aggregate the data. Use ONE workbook and ONE worksheet to store the data. If your data collection is in different files, Power Query can be used to create the ONE data file. Then you can easily create reports off that one data file.
Related
Image you have an excel sheet, with names as variables for formulas, references, etc. (all viewable the Names Manager).
You want to create clones of this sheet, and add them as separate sheets to another workbook.
However, the names will conflict.
E.g. FirstColumnTitle will be the same for each sheet.
Excel seems to latch the basic function to batch rename variable names in the Names Manager, so the same name can be renamed (e.g. append ‘_sheet1’ to FirstColumnTitle making it ‘FirstColumnTitle_sheet1’).
How would one go about this?
I tried Names Manager, and a VB Macro (link below) that was supposed to work (but only renamed a single variable).
Sub RenameCells()
Dim n As Name
For Each n In ThisWorkbook.Names
n.Name = "KUTOOLS_" & n.Name
Next n
End Sub
I can manually change the names one by one, but… what if there are hundreds of names on a sheet that will be cloned to the same workbook a handful of times?
Example: the sheet/worksheet is a loan amortization template. In the Template, it has names such as “LoanAmount” which refers to the cell where the loan amount is entered, and “LoanInterestRate” referring to the cell sign the APR.
If I try to copy that whole worksheet into another workbook twice (two different copies of the loan worksheet in two tabs in one workbook) the variable names (found in Names Manager) conflict with one another and end up interfering with one another or blocking calculations/functionality in one or the other worksheet (if they have different values.)
How to reproduce the problem (that I'm trying to solve):
Create a new spreadsheet from the "Loan Amortization Schedule" template,
then create a copy of that sheet a couple times to the same workbook (or another).
Now set a loan balance, APR, loan term, and payments per year (make it different for each sheet such that the number of payments should be different).
Notice that in the second (and third and fourth) sheet, the result for "Actual Number of Payments" for each sheet is whatever the value is for the first sheet. Open Names Manager, and the name for each indicates that its scope is only for the appropriate sheet, yet somehow sheet1's ActualNumberOfPayments reference name is referred to in the other sheets (even though their respective ActualNumberOfPayments appropriately refers to the other reference names in their own sheet only).
I'm trying to find a way to create a macros that would read the name of the sheet from an external workbook, and extract the necessary information from that sheet, but when I run it again, it would take from the next sheet? To make it clear:
A set of daily volumes are placed into an excel workbook where each sheet in the workbook is represented by the date (i.e. 31 sheets in a workbook for the month of May).
How can I make the Macros take the volume for May 6th volumes, but for the next day when I run the Macros it would take from May 7th etc?
Hope I made it clear and apologies for any inconvenience.
I have an Excel file where some data from multiple geographies come together. People from one geography don't have access to the sharepoint of other geographies. Each geography has its own worksheet where the data should be updated once a month.
I would like to have a button on each worksheet where once a month someone from each geography updates their worksheet before it is bundled together into one worksheet.
The function .UpdateLinks only works with the whole workbook which is not desirable since the sharepoint access is divided.
I tried to set Excel calculation to manual and afterwards made a button to .Calculate that specific sheet but it seemed to work at first but is not reliable.
ThisWorkbook.Sheets("worksheet1").Calculate '(inconsistent)
ThisWorkbook.Sheets("worksheet1").UpdateLink '(doesn't work)
I would like to have a button to update links only in a specific worksheet and not the whole workbook.
The Workbook.UpdateLink method is located in Workbook and does not exist in Worksheet therefore it is only possible to update the links of the whole workbook but not of single worksheets only.
Updating links in single worksheets only is not supported.
Good day,
After much trial and error I hope that someone can maybe help me with the following.
I have a document with a number of sheets. 'Sheet1' is an overview of all sales orders (displaying both open and closed ones) that are entered through a userform.
The other sheets are customer specific sheets that only list the sales order for that specific client (also displaying both open and closed orders).
Now I would like to have a 'Worksheet Change Event' that automatically updates the client specific sheet when data is entered in "Sheet1". And when you change data in 'Sheet 1' at a later stage again (for example you set the customer order from "open" to "closed" then it should update the matching cell or row for that customer in their respective sheet.
I am not sure if this is possible or if it should be a 'Button_Click' macro?
Here are some pictures of what it should look like:
Sheet1
Customer ABC
I have a workbook (logging.xlsx) with one sheet per month. In this sheet I enter different numbers per month.
To visualize the information from the logging workbook, I want to use some charts in an external (reporting) workbook. I prefer to have these charts in an external workbook, as the format of the logging workbook is not totally under my control.
To grep information from the logging workbook I'd like to automatically sync the information into the reporting workbook. To do so I can use external references like =[logging.xlsx]July!$I$1, however, this requires to make one reporting sheet per sheet in the logging workbook which increases the maintenance work in the reporting workbook.
Hence I was wondering whether there is a way, instead of =[logging.xlsx]July!$I$1 to use something like =[logging.xlsx]*ACTIVE_SHEET*!$I$1
In D10 add the formula:
=CONCATENATE("[";$A$1;"]";$B$1;"!";ADDRESS(ROW(),COLUMN()))
In the second sheet use:
=INDIRECT(ref!D10)