Avatar billede cbennike Nybegynder
03. marts 2004 - 21:18 Der er 14 kommentarer og
1 løsning

tabeller fra html til en excel fil - kan man det?

Jeg har en del html filer som jeg godt kunne tænke mig at få over i en excel fil. Det skal være sådan at man tager hver linie for sig, og putter i en kolonne:

Eksempel:
<B>S</B>
Navn: Søren Sørensen
Praksis: Pædagog
Adresse: Ryesgade 100
Postnummer: 8000 Århus C
Telefon: 86 86 86 86
E-mail: soren@soren.dk
Speciale: børn, unge og voksne

Det skulle gerne give 7 kolonner med hver deres egenskab

en af filerne kan ses på www.bennike.net/aarhus.htm

Er der ikke nogle eksperter der ved hvordan man gør det ? Jeg har virkelig ikke en anelse - jeg ved ikek engang om det er svært, men her er 100 point i puljen for et rigtigt svar, sig endelig til hvis der skal mere i ;-)
04. marts 2004 - 04:41 #1
Det bliver svært for der er ingen systematik i oplysningerne i den nævnte html-fil.

For nogle personer er der 7 linier, for andre er der 8, 9, 10 eller 11 linier.

Løsningsforslag 1:
Hvis du kun ønsker de 7 kolonner.

1. Marker alle personer i html-fil.
2. Kopier dem (Ctrl-C)
3. Skift til Excel
4. Aktiver celle A1
5. Sæt ind (Ctrl-V)
6. Marker de 7 celler for den 1. person (Klik 1 cellen med navn, hold Ctrl-tasten nede og klik i hver af de resterende 6 celler)
7. Marker celle B2
8. Vælg Rediger->Indsæt speciel, Transponer, OK
9. Gentag punkt 6-8 for hver person
10. Slet kolonne A
11. Indtast overskrifter i række 1

Besværligt - ja; men lettere end at indtaste oplysningerne igen.
04. marts 2004 - 04:45 #2
Løsningsforslag 2:
Hvis du ønsker alle data.

1. Marker alle personer i html-fil.
2. Kopier dem (Ctrl-C)
3. Skift til Excel
4. Aktiver celle A1
5. Sæt ind (Ctrl-V)
6. Indsæt ekstra rækker så oplysningerne står i den samme rækkefølge for alle personer. 1. celle: navn, 2. celle: praksis.....11. celle: speciale
7. Marker alle celler for den 1. person (Klik 1 cellen med navn, hold Shift-tasten nede og klik i den sidste celle)
8. Marker celle B2
9. Vælg Rediger->Indsæt speciel, Transponer, OK
10. Gentag punkt 7-9 for hver person
11. Slet kolonne A
12. Indtast overskrifter i række 1
Avatar billede cbennike Nybegynder
05. marts 2004 - 12:15 #3
Det ser faktisk meget fint ud og det virker ...men som du siger det er lidt besværligt.

Hvis du nu bare er de første 4 jeg skal bruge - det er nemlig alle ens. Kan man så automatisere det på en måde?
06. marts 2004 - 00:35 #4
Tror ikke det er muligt at lave noget uden at det bliver alt for kompliceret.
Avatar billede cbennike Nybegynder
06. marts 2004 - 23:04 #5
ok tak for svaret og beklager at min respons har taget så lang tid. Tak for hjælpen
Avatar billede cbennike Nybegynder
08. marts 2004 - 15:00 #6
Jeg har nu fundet ud af at det drejer sig om knap 800 gange jeg skal gøre ovenstående! Er det ikke en smart måde at gøre det på?
Avatar billede cbennike Nybegynder
08. marts 2004 - 15:00 #7
Eller bare en måde at gøre det på
Avatar billede bak Seniormester
08. marts 2004 - 16:18 #8
Hvis du kan køre en makro, så kan dette måske hjælpe
Kopier din webside (ctrl-A og kopier)
I regne arket vælg celle A1 og vælg indsæt speciel.
Indsæt som tekst.

Kør makroen GetHTML
Den placerer nu de transponerede (vendte) data i kolonne F og udaf.

Sub GetHtml()
Application.ScreenUpdating = False
Data_CleanUp
TransposeData
Application.ScreenUpdating = True
End Sub

Private Sub Data_CleanUp()
Dim EntireRange As Range
Dim x As Long
Set EntireRange = Range("A1:A" & Range("A65536").End(xlUp).Row)
For x = EntireRange.Cells.Count To 2 Step -1
    If Len(Cells(x, 1)) <= 3 And Len(Cells(x - 1, 1)) <= 3 Then
        Cells(x, 1).EntireRow.Delete
    End If
    If Len(Cells(x, 1)) <= 3 Then Cells(x, 1) = ""
Next
Cells(1, 1) = ""
End Sub

Private Sub TransposeData()
Dim EntireRange As Range
Dim rg1 As Range, rg2 As Range
Dim x As Long, y As Long
x = 2
Set EntireRange = Range("A1:A" & Range("A65536").End(xlUp).Row)
While x < EntireRange.Cells.Count
    Set rg1 = Range(Cells(x, 1), Cells(x, 1).End(xlDown))
    y = y + 1
    Set rg2 = Cells(y, 6)
    rg2.Resize(, rg1.Cells.Count) = Application.Transpose(rg1)
    x = rg1.End(xlDown).Row + 2
Wend
Columns("F:AA").EntireColumn.AutoFit
End Sub
08. marts 2004 - 16:48 #9
Men det forudsætter stadig at der er nøjagtigt samme antal oplysninger om hver person, og i samme rækkefølge.
Avatar billede bak Seniormester
08. marts 2004 - 17:28 #10
Næh, det gør det ikke. Virker uanset antal info. :-)
Avatar billede bak Seniormester
08. marts 2004 - 17:33 #11
men måske er en forklaring lige på sin plads.
data_cleanup fjerner  alle overflødige tomme linier samt de linier hvor der kun er et bogstav. Den efterlader en tom linie mellem hver record.
Dette udnyttes i TransposeData til at "markere" alt mellem de tomme og transponere dette.

Data bliver dog aldrig bedre end de er på forhånd, dvs hvis telefonnummer står normalt i 4 felt og nogle gange optræder i 5 felt ændrer makroen ikke på det.
08. marts 2004 - 17:59 #12
Bak>> Ja, som jeg skriver, hvis ikke rækkefølgen er korrekt - duer det ikke!
08. marts 2004 - 18:07 #13
Åbningstider står f.eks. i linie 6, 7, 8 og 9 og er udeladt på de første linier i html-filen.
Avatar billede bak Seniormester
08. marts 2004 - 18:22 #14
Korrekt Erik, hvis data'ene er rodet er resultatet det også, men alle linier bliver transponeret og derefter er brugeren på egen hånd.
Det er ikke muligt at rette disse data op automatisk, men generelt burde de første 4 være ok, men med enkelte svipsere.

Vedkommende, der har lagt data ud, har ihverttilfælde ikke tænkt på, at andre skulle kunne bruge den sådan her  :-)
Avatar billede cbennike Nybegynder
08. marts 2004 - 21:17 #15
Og det er bare lige det jeg ledte efter!
Jeg har lavet endnu et spørgsmål til dig 'bak'.
http://www.eksperten.dk/spm/474808

100 meget fortjente point!
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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