Avatar billede sleeper Nybegynder
05. marts 2008 - 16:13 Der er 6 kommentarer og
2 løsninger

Import af data - VBA / Macro

Hej

Jeg har en masse date i et regneark
jeg troede mit problem var løst i http://www.eksperten.dk/spm/822438

Men nu viser det sig at der ikke altid er ens data.

Jeg har i mit regneark, data i kollone A

navn
adresse
postnr/by

sådan er mønstret for det meste, men så nogle gange kommer der postbox med altså

navn
adresse
postbox
postnr/by

Hvordan for jeg organiseret disse data, så det står som følgende

Kollone A - NAVN
Kollone B - Adresse
Kollone C - EVT Postbox
Kollone D - Postnr / By
Avatar billede bak Forsker
05. marts 2008 - 17:07 #1
Hvis ikke der er flere overraskelser så kan denne kode gøre det. Lav output et tomt sted i samme ark og flyt det så bagefter.


Sub TransposeData()
  Dim EntireRange As Range
  Dim rgFirstcellIN As Range
  Dim rgFirstCellOUT As Range
  Dim rg1 As Range
  Dim x As Long
  Dim y As Long

  Set rgFirstcellIN = Application.InputBox("Select 1. cell for Datainput ", , , , , , , 8)
  Set rgFirstCellOUT = Application.InputBox("Select 1. cell for Dataoutput", , , , , , , 8)
  Set EntireRange = Range(rgFirstcellIN, Cells(65536, rgFirstcellIN.Column).End(xlUp))
  x = 2
  While x < EntireRange.Cells.Count
      Set rg1 = Range(Cells(x, 1), Cells(x, 1).End(xlDown))
      y = y + 1
      rgFirstCellOUT(y, 1).Resize(, 4) = Application.Transpose(rg1)
      If rg1.Cells.Count = 3 Then
        rgFirstCellOUT(y, 1).Offset(, 3) = rgFirstCellOUT(y, 1).Offset(, 2)
        rgFirstCellOUT(y, 1).Offset(, 2) = ""
      End If
      x = rg1.End(xlDown).Row + 2
  Wend
End Sub
Avatar billede sleeper Nybegynder
05. marts 2008 - 17:21 #2
Hej Bak
Den melder fejl i
Set EntireRange = Range(rgFirstcellIN, Cells(65536, rgFirstcellIN.Column).End(xlUp))
Avatar billede excelent Ekspert
05. marts 2008 - 18:05 #3
prøv at aktivere arket med dine adresser før du kører koden
Avatar billede kabbak Professor
05. marts 2008 - 18:48 #4
en anden kode
Klik ind i den første celle med navn og kør makroen

Sub Makro1()
    Dim ADR As Variant, WS2 As Worksheet, RK As Range
    Set WS2 = Worksheets("Ark2")
    ActiveCell.Select
    Do
        ADR = Range(Range(ActiveCell.Address), Range(ActiveCell.Address).End(xlDown))
        Set RK = WS2.Range("A65536").End(xlUp).Offset(1, 0)
        Select Case UBound(ADR)
        Case 3
            WS2.Range(RK.Address) = ADR(1, 1)
            WS2.Range(RK.Address).Offset(0, 1) = ADR(2, 1)
            WS2.Range(RK.Address).Offset(0, 3) = ADR(3, 1)
        Case 4
            WS2.Range(RK.Address) = ADR(1, 1)
            WS2.Range(RK.Address).Offset(0, 1) = ADR(2, 1)
            WS2.Range(RK.Address).Offset(0, 2) = ADR(3, 1)
            WS2.Range(RK.Address).Offset(0, 3) = ADR(4, 1)
        End Select

        If IsEmpty(ADR(1, 1)) Then Exit Sub
        ActiveCell.Offset(UBound(ADR) + 1, 0).Select
    Loop
    Set WS2 = Nothing
    Set RK = Nothing
End Sub
Avatar billede sleeper Nybegynder
05. marts 2008 - 20:40 #5
Excelent - tak, jeg prøvede at samle datane til et andet ark.

Bak - tak for hjælpen, det var lige præcis det jeg manglede, ligger du et svar.

Kabbak - din fungere lige så godt, men point til bak, da hans kom først, samt virkede.
Avatar billede sleeper Nybegynder
05. marts 2008 - 21:20 #6
Kabbak, jeg brugte din, modificere den lidt, så den samtidigt transpornere datane.

I har begge fortjent lidt point, venligst svar begge så i kan dele

Jeg takker for alt jeres hjælp.
Avatar billede kabbak Professor
05. marts 2008 - 22:27 #7
et svar ;-))
Avatar billede bak Forsker
06. marts 2008 - 16:43 #8
et til :-)
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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