As much as you may dislike Excel, it's your best friend for this.
Data > Get Data>From Excel. Select the AccctNum column, then select Unpivot Other Columns and you'll end up with records like this (AcctNum, [Period], Amount)
I used to never ever use Excel, but it's MSFT's bread and butter app, so it gets all the love. PowerQuery is your friend!
Then when you're done, maybe create a linked table to the resulting table from the unpivot.
Here's the PowerQuery I clicked together to do the transformation (there are only a few columns in mine because I didn't want to do lots of data entry... but that doesn't matter because the "Unpivot other columns" step will take care of as many columns as you have. The PowerQuery will transform the table so that it's more like a normalized database table:
Code:
let
Source = Excel.Workbook(File.Contents("C:\Users\piete\OneDrive\Documents\Unpivot Account Periods.xlsx"), null, true),
Sheet1_Sheet = Source{[Item="Sheet1",Kind="Sheet"]}[Data],
#"Promoted Headers" = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"AcctNum", type text}, {"P01", Int64.Type}, {"P02", type number}, {"P03", type number}}),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"AcctNum"}, "Attribute", "Value"),
#"Renamed Columns" = Table.RenameColumns(#"Unpivoted Other Columns",{{"Attribute", "Period"}}),
#"Replaced Value" = Table.ReplaceValue(#"Renamed Columns","P","",Replacer.ReplaceText,{"Period"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Replaced Value",{{"Period", Int64.Type}})
in
#"Changed Type1"
The only part you'd have to replace is the path to the file in the "Source=..." statement. Then just link to that from Access and if you add more records to the source (and maybe run a refresh (like F9?)), the query will re-run and then you can just import all the data into Access.