Avatar billede kualle Juniormester
12. november 2014 - 10:56 Der er 1 kommentar og
1 løsning

Omdøbe kolonnenavne til kolonnen før + nuværende navn

Hej!

Vi sidder med et problem. Vi har samlet en stor bunke data, som er struktureret uheldigt. Data ligger i excel i mange ark i flere filer. Vi skal derfor have det samlet til een fil via en import til programmet SAS. Problemet her er, at vi ikke kan importere det, fordi flere kolonner hedder det samme :-(.

Der er to navne, der går igen: "Dato fra-1" og "Dato til-1". De kan gå igen op til 5 gange i samme ark. Og vi har omkring 700 ark.

Vi vil rigtig gerne have en procedure, således at vi kan omdøbe de to kolonnenavne. Logikken skal være, at hvis navnet er "Dato fra-1", skal den hedde overskriften på kolonnen tidligere + "Dato fra", og hvis den hedder "Dato til-1", skal den hedde dato navnet på den forrige kolonne + "Dato til".

Altså, hvis "Dato til-1" står i kolonne m skal den omformes "=Hvis(M="Dato til-1";L&" Dato til";M).

Kan nogen lave sådan en kodestump, der går hele vores projekt igennem og få den til at gøre det automatisk!
Avatar billede kabbak Professor
12. november 2014 - 15:13 #1
her er en "kodestump" der gør det' men hvis den skal loop igennem ark og excel mapper, så skal der mere til.

Public Sub test()
Dim Col As Integer, Overskrift As Variant, I As Integer
    Col = ActiveSheet.Range("a1").SpecialCells(xlLastCell).Column ' finder sidate kolonne med date
    Overskrift = ActiveSheet.Range(Cells(1, 1), Cells(1, Col)) ' putter overskrifterne i en variabel
    For I = 1 To Col
        If Overskrift(1, I) = "Dato fra-1" Then ' finder "Dato fra"
            Overskrift(1, I) = Overskrift(1, I - 1) & " Dato fra" ' retter den
        ElseIf Overskrift(1, I) = "Dato til-1" Then ' finder "Dato til"
            Overskrift(1, I) = Overskrift(1, I - 2) & " Dato til" ' retter den
        End If
    Next
    ActiveSheet.Range(Cells(1, 1), Cells(1, Col)) = Overskrift ' overskriver med nye data

End Sub
Avatar billede kualle Juniormester
13. november 2014 - 11:25 #2
Hej Kabbak

Det er en smart makro, du har lavet.

Jeg fik selv udviklet denne, som gør det ønskede. Jeg lykkedes heller ikke med at få den til at loope.Men så er det dejligt, at man har folk til det kedelige! ;-)...




Sub Makro4()


    Rows("2:2").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "=R[-1]C"
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "=R[-1]C"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(LEFT(R1C,8)=""Dato fra"",R1C[-1]&"" dato fra"",IF(LEFT(R1C,8)=""Dato til"",R1C[-2]&"" dato til"",R[-1]C))"
    Range("C2").Select
    Selection.AutoFill Destination:=Range("C2:CV2"), Type:=xlFillDefault
    Range("C2:CV2").Select
    Selection.End(xlToLeft).Select
    Rows("2:2").Select
    Selection.Copy
    Rows("3:3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Rows("1:2").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester