Avatar billede splokit Nybegynder
30. april 2007 - 13:08 Der er 11 kommentarer og
1 løsning

Tekst om bygning via vb

Hey jeg Har en gammel vb.exe fil som har gemt noget data i X.antal af tekst filer. som jeg har overført til excel.
X=Mange

vb.exe filen har på en eller anden måde kunde holde styr på den database, men andre systemer kan ikke finde hover eller hale i det...

Har fået samlet det sammen til rækker som bare skal deles op

Hvis Række 1 er indexkolonnen
Vil min data komme i kolonne "A:A"
Min data ser sådan ud.
KNr:654654 Id1:kæjbhvb564658 Id2:jhd4fdfg:sdf
Id1:kæjbhvb564658 KNr:654654 Id2:jhd4fdfg:sdf
Id2:jhd4fdfg:sdf Id1:kæjbhvb564658 KNr:654654

Det jeg vil have den til er
Finde "KNr:" i hver række og sætte den tekst efter "KNr:" i "B:B"
Det samme med "Id1:" til "D:D" Og "Id2:" Til "E:E"
Avatar billede excelent Ekspert
01. maj 2007 - 11:20 #1
hvor meget af følgende er i 1 selle ?

KNr:654654 Id1:kæjbhvb564658 Id2:jhd4fdfg:sdf
Id1:kæjbhvb564658 KNr:654654 Id2:jhd4fdfg:sdf
Id2:jhd4fdfg:sdf Id1:kæjbhvb564658 KNr:654654

Har uden held forsøgt at lave en vba-kode til at splitte
ovenstående op i kolonner

men du kan evt. prøve følgende:

Data>Tekst til kolonner
Vælg Afgrænset
flueben i Mellemrum - klik Næste
flueben i andet - indtast et kolon i box - klik Næste
klik Udfør
Avatar billede splokit Nybegynder
01. maj 2007 - 11:32 #2
Det er værdien i "A1"
[A2]KNr:654654 Id1:kæjbhvb564658 Id2:jhd4fdfg:sdf
[A3]Id1:kæjbhvb564658 KNr:654654 Id2:jhd4fdfg:sdf
[A4]Id2:jhd4fdfg:sdf Id1:kæjbhvb564658 KNr:654654

Den står ikke som den skal hele tiden...
Den skal finde værdien "KNr:" og flytte det som er efter ":"
og flytte det ud på B,C,D ud for hvad der står før :
[B2"KNr:"] = "654654" [C2"Id1:"] = kæjbhvb564658 [D2"Id2:"] = jhd4fdfg:sdf
[B3"KNr:"] = "654654" [C2"Id1:"] = kæjbhvb564658 [D2"Id2:"] = jhd4fdfg:sdf
[B4"KNr:"] = "654654" [C2"Id1:"] = kæjbhvb564658 [D2"Id2:"] = jhd4fdfg:sdf
hvis det giver nogle ide,
Avatar billede kabbak Professor
01. maj 2007 - 14:51 #3
Marker dine data og kør makroen

Public Sub Test()
    Dim A(2) As String, B As Integer, C As Integer, Selle As Range
    A(0) = "KNr:": A(1) = "Id1:": A(2) = "Id2:"
    For Each Selle In Selection
        For I = 0 To 2
        B = InStr(1, Selle, A(I)) + 4
        C = (InStr(B, Selle, " ") - 1) - B
        If C < 0 Then C = Len(Selle) - B
          Cells(Selle.Row, I + 2) = Mid(Selle, B, C)
        Next
    Next
End Sub
Avatar billede kabbak Professor
01. maj 2007 - 14:53 #4
en lille rettelse
Public Sub Test()
    Dim A(2) As String, B As Integer, C As Integer, Selle As Range
    A(0) = "KNr:": A(1) = "Id1:": A(2) = "Id2:"
    For Each Selle In Selection
        For I = 0 To 2
        B = InStr(1, Selle, A(I)) + 4
        C = (InStr(B, Selle, " ")) - B
        If C < 0 Then C = Len(Selle) + 1 - B
          Cells(Selle.Row, I + 2) = Mid(Selle, B, C)
        Next
    Next
End Sub
Avatar billede splokit Nybegynder
02. maj 2007 - 09:37 #5
kabbak det virker som det skal mange tak,
smid et svar... :D
Avatar billede splokit Nybegynder
02. maj 2007 - 10:06 #6
Ps. kan man lave den om så den selv tager række 2 til 10000
og gør det hvis der er værde, ved klik på knapen.!?
Avatar billede splokit Nybegynder
02. maj 2007 - 10:07 #7
kanppen
Avatar billede splokit Nybegynder
02. maj 2007 - 10:56 #8
Har den... Selection = Range("A2:A1000")
ps så var det knappen.. :S

Smid et svar kabbak
Avatar billede kabbak Professor
02. maj 2007 - 12:03 #9
et svar ;-))
Avatar billede splokit Nybegynder
02. maj 2007 - 12:22 #10
Fand lige en lille fejl...
Hvis den kunne finde ud af det også..
Nogle af den har ikke mellemrum,

noget med hvis "Id1:" ikke har mellen foran skal den lave et.. osv

[A2]KNr:654654Id1:kæjbhvb564658Id2:jhd4fdfg:sdf
[A3]Id1:kæjbhvb564658KNr:654654 Id2:jhd4fdfg:sdf
[A4]Id2:jhd4fdfg:sdf Id1:kæjbhvb564658KNr:654654
Avatar billede kabbak Professor
02. maj 2007 - 12:46 #11
Public Sub Test()
    Dim A(2) As String, B As Integer, C As Integer, Selle As Range
    A(0) = "KNr:": A(1) = "Id1:": A(2) = "Id2:"
    For Each Selle In Selection
        For I = 0 To 2
            B = InStr(1, Selle, A(I))
            If B > 1 Then
                If Mid(Selle, B - 1, 1) <> " " Then
                    Selle.Value = Left(Selle, B - 1) & " " & Right(Selle, Len(Selle) + 1 - B)
                End If
            End If
        Next
        For I = 0 To 2
            B = InStr(1, Selle, A(I)) + 4
            C = (InStr(B, Selle, " ")) - B
            If C < 0 Then C = Len(Selle) + 1 - B
            Cells(Selle.Row, I + 2) = Mid(Selle, B, C)
        Next
    Next
End Sub
Avatar billede splokit Nybegynder
02. maj 2007 - 12:59 #12
Det er så lækkert... Mange gange tak igen kabbak
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