Hvis dine records er lige lange hver gang dvs at hver fylder fx. 7 rækker og der er en tom række mellem hver record
Sub Transponer() ' Denne makro transponerer en kolonne med data ' til x nye kolonner ' Bemærk at makroen kører så længe der er data i data-kolonnen Dim iRow As Integer Dim iColumn As Integer Dim iCounter As Integer Dim IColumn2 As Integer Dim iRecSize As Integer Dim xArray As Range Application.ScreenUpdating = False iRow = 1 'sætter start-rækken for data iColumn = 1 'sætter start-kolonnen for data iCounter = 2 'sætter indsættelses-række for tranponerede data IColumn2 = 2 'Vælger indsættelseskolonne iRecSize = 8 'vælger Recordstørrelse (7 + 1 tom)
Do Until IsEmpty(Cells(iRow, iColumn)) = True Set xArray = Range(Cells(iRow, iColumn), Cells(iRow + iRecSize - 1, iColumn)) 'kopierer de 8 rækker 'fastsætter, hvor data skal indsættes 'kopierer og transponerer de 8 rækker til slut-området 'Range(Cells(iCounter, IColumn2), Cells(iCounter, IColumn2 + iRecSize - 1)) _ = WorksheetFunction.Transpose(Range(Cells(iRow, iColumn), Cells(iRow + iRecSize - 1, iColumn))) Range(Cells(iCounter, IColumn2), Cells(iCounter, IColumn2 + iRecSize - 1)) _ = WorksheetFunction.Transpose(xArray) 'sætter inddata-variabel til næste kopiering (7 rækker længere ned) iRow = iRow + iRecSize 'sætter slut-variabel til næste række iCounter = iCounter + 1 Loop End Sub
Ok... i den reference fandt jeg følgende, som jeg vil afprøve:
Citat:
"Prøv denne Sub Makro1() \' \' Makro1 Makro \' Makro indspillet 04-12-01 af Allan Svendsen \' Dim iRow As Integer Dim iColumn As Integer Dim iCounter As Integer iRow = 1 iColumn = 1 iCounter = 1 Do Until IsEmpty(Cells(iRow, iColumn)) = True Range(Cells(iRow, iColumn), Cells(iRow + 5, iColumn)).Select Selection.Copy Cells(iCounter, iColumn + 1).Select Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _ , Transpose:=True iRow = iRow + 6 iCounter = iCounter + 1 Loop End Sub Den starter i celle A1, og går 6 rækker ned og kopiere, derefter vælger den celle b1, hvor dataene bliver transponeret, ligesom du ville have det, ik? ASKIMS" Citat slut.
Ja, se om du kan bruge en af makroerne ellers ændrer vi så du kan... Det drejer sig om med begge makroer at dine records er lige store, altså fylder lige mange rækker nedaf for hver person i registret.
busch-jensen -> Når du har fået bak's tryllerier til at fungere, kan du importere til Access ved flg. kode. M.h.t. formateringen vil Access bestemme datatypen. Hvis du i kolonnen postnr kun har tal, vil importfunktionen fastsætte datatypen til tal, hvis du har tekst i dette felt vil datatypen blive tekst.
DoCmd.TransferSpreadsheet o.s.v. er selve importen til Access. Importen sker til tabellen "import", Hvis tabellen ikke findes, bliver den oprettet og bruger regnearkets færste række som feltnavne.
DoCmd.OpenQuery "tilføj", acNormal, acEdit: Sende de importerede data over i en anden tabel, hvis navn er defineret i forespørgslen. I denne tabel kan du fastsætte andre felttyper end i import-tabellen. Du kan ligeledes have relationer til andre tabeller. F.eks. kan du have en tabel med postnr. og byer og en relation mellem de 2 postnr-felter.
DoCmd.DeleteObject acTable, "import" i starten af koden sikrer, at der ikke er en tabel i forvejen med dette navn.
DoCmd.OpenQuery "slet", acNormal, acEdit sletter alle poster i den tabel vi sendte posterne over i efter importen.
De sidste 2 kodelinier er lavet fordi jeg forestiller mig, at du skal foretage importen jævnligt efter en evt, ajourføring af regnearket.
Når koden afvikles vil du får systemadvarsler fordi fu prøver at tilføje / slette data i tabellerne. Disse advarsler kan du komme uden om, ved i starten af koden at indsætte flg.:
DoCmd.SetWarnings False
og i slutningen:
DoCmd.SetWarnings True
Det er vigtigt at huske Warnings True, idet systemadvarsler vil forblive frakoblede i hele applikationen, hvis de ikke kobles til igen. Du vil således ikke blive prompet for lagring af ændringer du måttet have lavet i formularer ect. Jeg har afprøvet og indsat koden i en Access97 db. Men den skal også fungere i 2000 og xp. Blot læg din e-mail hvis du vil have den tilsendt.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.