I have an Excel workbook with 36 different sheets in it that I receive every 2 weeks, the sheets have common headers across all tabs and unique headers which are different on each tab but each record has a unique ID which can have several records.
What I'm trying to do is strip the unique IDs from all of the sheets then pull the data through from each of them onto one sheet with all of the common headers as well as all of the unique headers.
I was considering using the code from the below post to import it into Access connect the tables and export it back into one sheet in Excel but the code doesn't work, I get the run-time error that: field "F1" does not exist in destination table error and I can't see how they've fixed that issue.
Importing multiple sheets from an excel file into multiple tables by sheet name
I'm not sure that's the best way to achieve what I'm to.
Don't import the sheets, link them.
Then create a straight select query using the linked table(s) as source and where you rename (alias) fields like F1 to something meaningful. Also apply simple filtering for invalid records and conversion of field values as needed.
Then use this/these query/queries for your further processing.
Related
I currently have one excel file with four worksheets with data (Name: target value 2022.xlsx). This data is used in multiple excel files to make calculations and to show the values using VLookUp. Until now I copy-paste the values from this one file with four worksheets into all the other files with those four worksheets (and more) when one value changes throughout the year. It also seems to be problematic when a new year begins and a new "target value 2023.xlsx" is required. I tested a lot of ways to make a connection, but nothing seems to be the perfect way:
copy-paste each table via VBA (current way, but I don't want to open every file just because one value changed and click the "Refresh" button)
external reference Cell A1: =[target value 2022.xlsx]Table1!E3 (if one column is deleted, the connection shows #REF!)
Data > New Query > From File > From Workbook (if one column is deleted, the power query doesn't work anymore)
Data > From Text (only works, if all four worksheets are in four seperate csv-files, not optimal)
Data > From Access (seems to be the best way to get the data from four different tables within the database???)
What's the best way to do this, if multiple people use it? The values in "target value 2022.xlsx" change multiple times a year and many users need different files where the data is required. Thank you!
I have 1000 excel workbooks and I have to summarize data in one excel workbook. Each workbook consists of data of one property (id of property, region, market value etc.) In the summary workbook I want to insert in a column the id of property and automatically search across the file of workbooks and insert the value for its region, market value etc.
Thanks
I am going to first assume that there is some structure to the workbooks you are discussing, for example all market value workbooks are the same but only the data is different. it would also be great if they were in different folders and if they were named in a consistent way.
This is only an example with links to different content that will help solve your problem. Your question is too vague and does not provide me with specific enough information to provide exact solution.
Combining records.
https://www.youtube.com/watch?v=rSQwZ1d3b1g&list=PLrRPvpgDmw0m3ohSvgwoHvd0KO8QsQdiK&index=5&t=0s
Merge Records.
https://www.youtube.com/watch?v=8F7v6YvnsiY&list=PLrRPvpgDmw0m3ohSvgwoHvd0KO8QsQdiK&index=6
Pivot Table Slicer for summary reports.
https://www.youtube.com/watch?v=zgt7SdrYJqg
Your best bet would be to use the power query feature to combine data from workbooks inside a folder
From DATA TAB -> Select GET DATA drop down from Get & Transform ribbon -> From File -> From Folder.
You should be able to combine all the workbooks in folder If your problem is simple.
If each workbook has multiple pages of info and the pages differ then you will need to create a custom function in power query to handle this issue.
If workbooks are all in one folder then you will need to run power query multiple times per condition and use a filter with power query assuming that the files have some kind of organized naming convention.
Once you have combined files and cleaned up the data you should be able to combine the records.
You will do this using the power query feature merge feature.
From DATA TAB -> Select GET DATA drop down from Get & Transform ribbon -> Combine Queries -> Merge.
Once records are all merged you should be able to have your final table and use a pivot table to give you the option to select ID with filters or pivot table slicers so that you can have the summary report by ID going across all the workbooks like you wanted.
If anything is unclear please provide more info so i can help you specifically
I am using Power Query in Excel 2016 to combine data from 12 different workbooks within the same folder system into one table, and need to add an additional column in the master table that tracks the status of each row. However, when I refresh the data, the Status column does not follow the rows to which it is initially applied.
I have already looked at [ Inserting text manually in a custom column and should be visible on refresh of the report ] but this solution only works with a unique ID column. Because each of the 12 workbooks is edited separately and because there is no single column that can be guaranteed to have unique values between all of the different spreadsheets, I don't have a key to join the data to the additional column.
I believe there is always a way of finding a Unique ID. If you can get your head around this, it is not that difficult to solve your problem.
See my below example, I used three sample workbooks saved in a Test folder. Depends on the way you add them to the query editor, in my example I used From Folder and follow the prompts without making any changes and combined the tables automatically. Once combined there is a Source.Name column automatically added. I suggest to leave this column in your output table as it can form part of the Unique ID if your data is highly identical across the workbooks.
An optional step (not in my screenshot) is to add an Index column and concatenate the index number with a product/task name so it can make that specific line of data entry even more unique.
Once you added the Status column with data entered manually on the master table, load the master table back to query editor.
Then go back to the original query (Test (Input) in my example) and merge it with the reloaded output query. See my screen-shot for how to 'uniquely' merge the two tables.
The rest is self-explanatory. I think the key is finding elements of the Unique ID and incorporate it in the merge part.
Let me know if you have any questions. Cheers :)
I have no previous experience in Access, VBA coding or in Excel macros prior to teaching myself the past month via these forums. Thank you forums and contributors. I have enjoyed my Access learnings so far, the challenge that it has provided and appreciate any help that I can get. As such, the code and methods that I have used to this point may well be convoluted and confusing. I will do my best to provide relevant details and accurate terminology.
I work in a lab and I am creating an Access Form for semi-automated reporting. Samples are received from clients and are logged into the Excel Table R&D Log. The worksheet is InProcess. Samples are sorted based on the site in which they originate and given a one or two letter site code (G, D, WH, etc.) and an ID "yy-000" in separate Excel columns (i.e. D 18-096). Samples may be submitted for multiple analyses (Metals, Water, Soil, etc.) and may even have multiple rows of reporting if multiple analytes are identified in the sample. There are several other columns, such as receipt date, reporting date, units, etc. Once samples are reported, I manually copy and paste them into the Archived worksheet, and delete the record and blank row from the InProcess worksheet. Since one sample may have multiple analyses and even more potential results, each record would be reported on a new Excel row (with the same D 18-096 ID number). Thus, there is not a single unique identifier or primary key for each sample in the current format. R&D Log is updated manually by lab technicians and the worksheet InProcess is a linked table in an Access Database.
The Access Database is using two combo boxes on a Form frmInProcess to filter a Query qryInProcess of the linked table. The combo boxes are filtering the report destination (one client may receive multiple site codes) and the analysis (reports are separated based on type of analysis). The Query is also filtering out blank results and blank dates, so only completed samples will appear on the filtered Form. I have generated VBA code to this point that will export the Form to a .pdf, save the file with unique filename, and open outlook to mail out the report. I have also managed to export the filtered Form frmInProcess to an Excel file Access Test (not the linked file).
What I would like to do now is to automate the transfer of completed test results from the Excel worksheet R&D Log: InProcess to R&D Log: Archived and delete the record from the InProcess worksheet. I am not sure if I can export the filtered Form into a linked Excel table, or if I must use a separate Excel file (or if it even matters for simplicity of code?). I would now like to read the exported filtered Form in Excel Access Test, lookup matching rows in R&D Log based on several criteria (site, ID, Analysis, Analyte, Report Date) and automate the transfer of records between R&D Log worksheets. End result being that Access generates reports for completed tests, and the records are removed from InProcess testing and transferred to Archived testing in Excel. I am guessing that I may need to close the Access application and perform this in Excel. Hope this is easy enough to follow.
Thank you.
In my experience, importing an Excel document into a temporary NEW (or totally empty) Access table is usually the easiest way to go. Then you do not have to worry about cell references like you do in Excel VBA. Even if the Excel document has old data in it with just a few new changes each time, importing it into a temporary Access table could be the simplest way to go, because then you can compare the data in this table with the data in another, permanent Access table and update the latter based on the former.
As far as the original Excel file, if you need to delete rows there, it might be quicker to export a new Excel file with just the data the old one is supposed to end up with, and then use VBA to delete (or - safer! - rename) the old file.
So the development process goes something like this:
Save import steps by first importing an Excel file via Access' ribbon options "External Data" (tab) ->"Excel" and when you finish, be sure to check the "Save import steps" box and note the name you give the "saved import" because you will need that in your VBA code.
In Access, write a function for deleting the table. The VBA code is:
Const cTable = "MyExcelTempTable"
If TableExists(cTable) Then
DoCmd.DeleteObject acTable, cTable
End If
Now you can test your delete function on the data you imported.
Write VBA code to import the same spreadsheet to create the same table:
Const cSavedImport = "Import-MyExcelTempTable"
' Import the Excel file
DoCmd.RunSavedImportExport cSavedImport
Write more VBA function(s) to check the imported table for bad data and then to copy it into the permanent table. You might be updating existing records or adding new ones. Either way, you could use Access queries or SQL to do this and run them from VBA.
Write a VBA function to rename the old Excel file. (You could use an InputBox if the Excel file name is different each time. I do this for importing Excel files, and I set a default value so I do not have to type as much.)
Write a VBA function to export the new version of the Excel file.
Make yourself a button on a form that, when clicked, runs a VBA function. Inside that function, run Steps 2 through 6, above.
I am not sure my answer exactly matches what you are trying to do, but hopefully you get enough of a picture of the workflow to figure out the details of what you need.
I have two tables A and B that have a different number of columns, with absolutely no match between the columns names but one differentiator (let's call it ID).
I'm programming a macro in SAS, so that it outputs an excel file such as:
each sheet within the excel is corresponding to an ID.
within each sheet, I have:
content of table A
empty line
content of table B
The problem is that I can't append rows of data in SAS because columns are non matching.
Any thoughts?
Thanks for your help!
You can use DDE for that - Dynamic Data Exchange Protocol. Basically what it does is simulating user's commands and clicks on various menus and buttons in Excel (and also in Word and some other applications) - or, more exactly, issues commands on now obsolete Macro Language for Excel ver. 4 (X4ML).
So, using DDE, you can in SAS program launch Excel, open or create workbook, create tabs (spreadsheets), put your data into specified cells range, format any single cell or range etc.
Here's a good intro into this topic:
http://www2.sas.com/proceedings/sugi26/p011-26.pdf