Link to home
Start Free TrialLog in
Avatar of DougDodge
DougDodge

asked on

Data Normalization

In the attached sheet "PROBLEM" it has two tabs. "Data" & "Working"

The Data tab gets deleted and replaced almost daily. The working tab is the format to use to handle calculations. When the Data worksheet is imported I would need VBA code to loop through the data one row at a time and split the cell value from being X/X to two cells in the "Working" worksheet.
The primary key field is a unique value.

Cell Y4 on the data worksheet would need to be split into cells AH6 and AJ6 on the working worksheet. And so on through the cells, then the next row.

I have tried formulas but loose everything every time I delete and re-import a new Data worksheet.

Some help here would be appreciated.
PROBLEM.xlsx
Avatar of Jacques Geday
Jacques Geday
Flag of Canada image

Question:

1) Will the daily data plugged in sheet Data will always start at: Row 4 and the columns from Y to extreme right ?
2) Are columns variable or fixed like always Y to AG or can change ?
3) Will the result in working always plugged in Row 6 and down and Col AH to extreme right ? and also variable columns or fix ?

gowlfow
Also an other question

1) What about column C on sheet working how is it filled ? should the macro fill it as well ? if yes then presume it is from Col C in Data ?
2) What about the rest of columns in Working I see these are formulas ...

gowflow
Again it seems you are busy but I got my way around.

Pls check the attached file as I assumed that the data in Data will always start at row 4 and data in Working will always start at row 6 and columns are fixed.

If it is anything different then will adapt to your request.

Here is the code

Sub GetData()
Dim WSD As Worksheet
Dim WSW As Worksheet
Dim MaxRowD As Long, MaxColD As Long, MaxRowW As Long, MaxColW As Long, I As Long, J As Long, K As Long
Dim MinRowD As Long, MinColD As Long, MinRowW As Long, MinColW As Long
Dim dTemp

'---> Set Variables
Set WSW = Sheets("Working")
MinRowW = 6
MaxRowW = WSW.Range("C" & WSW.Rows.Count).End(xlUp).Row
MaxColW = WSW.Cells(MinRowW - 1, WSW.Columns.Count).End(xlToLeft).Column
MinColW = WSW.Cells(MinRowW - 1, MaxColW).End(xlToLeft).Column


Set WSD = Sheets("Data")
MinRowD = 4
MaxRowD = WSD.Range("C" & WSD.Rows.Count).End(xlUp).Row
MaxColD = WSD.Cells(MinRowD - 1, WSD.Columns.Count).End(xlToLeft).Column
MinColD = WSD.Cells(MinRowD - 1, MaxColD).End(xlToLeft).Column


'---> Clear old data
WSW.Range("C" & MinRowW & ":C" & MaxRowW).ClearContents
WSW.Range("AH" & MinRowW & ":BH" & MaxRowW).ClearContents

For I = MinRowD To MaxRowD
    K = 0
    WSW.Cells(I + (MinRowW - MinRowD), "C") = WSD.Cells(I, "C")
    For J = MinColD To MaxColD
        dTemp = Split(WSD.Cells(I, J), "/")
        WSW.Cells(I + (MinRowW - MinRowD), J + K + (MinColW - MinColD)) = dTemp(0)
        WSW.Cells(I + (MinRowW - MinRowD), J + K + (MinColW - MinColD) + 2) = dTemp(1)
        K = K + 2
    Next J
Next I

MsgBox "Data Transfered successfully.", vbInformation

End Sub

Open in new window


Check the attached file as I deleted the data in working (kept the formulas) and run the button Get Data and see if all is ok.

gowflow
PROBLEM-V01.xlsm
Avatar of DougDodge
DougDodge

ASKER

Columns and rows are static.....

Attached is a little more detailed example.

The "Tracking" worksheet is the one that is deleted and replaced all the time..... "MC Tracker Data" is static in the control workbook.
PROBLEM.xlsx
More detail.....
What is it a test to see if I pass classes in programming ???

Why didn't you post the correct workbook at the first place ???

gowflow
Is this what you want ? I adapted the code in the last workbook that you posted.
Pls check and let me know if it is fine.

gowflow
ASKER CERTIFIED SOLUTION
Avatar of Jacques Geday
Jacques Geday
Flag of Canada image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Works perfectly.....
I've requested that this question be closed as follows:

Accepted answer: 0 points for DougDodge's comment #a40570182

for the following reason:

Exactly what I needed..... Thank you.
I think you closed this question by mistake as you attributed yourself 0 points and acknowledged that The solution that I provided works perfectly.

I activated an objection to this closure so you could correct the closing.
gowflow
Great !!! :)
gowlfow
I think I corrected this now..... Amazing, a site with programmers and this is one of the worst sites to navigate and work with....
I do not understand your comment:


this is one of the worst sites to navigate and work with....
Hard to do searches.
Notifications button keeps disappearing. It is there when my mouse is over the place it should be, but it rarely shows.
And you I have had issues over closing questions without awarding points correctly.
ok no problem don't worry you can ask me I will be glad to help. Pls post here any link to any new question you may need help with. We had a rough start at the beginning but after I guess things went smooth.

Hv a good day
gowflow