24. december 2010 - 16:32Der er
1 kommentar og 1 løsning
Concatenate/sammenkæd indtil karaktergrænse
Hejsa Jeg har et mega-problem, som jeg håber, at der er nogen, som kan løse. Jeg har nogle tekster fra forskellige systemer, som skal overføres til fra et system til et andre systemer. Desværre har de forskellige opsætninger. Derfor skal teksterne skilles af og samles igen i forskellige felter med dertilhørende karaktergrænser. Til at løse opgaven har jeg Excel. Eksempel: System 1: Karaktergrænse: 3x30 Der kan godt være tekster, som kun har en tekst1. Tekst1: Trøje blå XXXL Tekst2: Leveres med ekstra foer bomuld Tekst3: Ekstra informationer System 2: Karaktergrænse: 250 Varetekst: Trøje blå XXXL Leveres med ekstra foer bomuld Ekstra informationer System 3: Karaktergrænse: 16 + 250 Simple item text: Trøje blå XXXL Long item text: Trøje blå XXXL Leveres med ekstra foer bomuld Ekstra informationer.
Der er flere systemer med flere opsætninger. Jeg har forsøgt at løse problemet med formler, hvilket er muligt hvis der er få celler, men jeg løb ret hurtigt ind i karaktergrænsen for formler. Hvis jeg håndterer problemet med LEN/LÆNGDE, får jeg problemer med orddeling, og det vil give problemer i nogle af de andre systemer. Er det muligt at håndtere problemet via vba? Jeg har forestilt mig at bruge en tekst-til-kolonner funktion, hvor makroen tæller fra venstre til højre og sammenkæder/concatenate're indtil karaktergrænsen. Resultatet overføres til bestemt celle. Det skal sige, at det kan ske at en celle er tom, men det kan der måske køres uden om ved at sige, at funktionen maksimalt kører 5000 poster af gangen.
Problemet blev løst ved hjælp af en meget lang nested-formel. Jeg oprettede først denne funktion, som hedder Mulicat. Public Function MultiCat( _ ByRef rRng As Excel.Range, _ Optional ByVal sDelim As String = "") _ As String Dim rCell As Range For Each rCell In rRng MultiCat = MultiCat & sDelim & rCell.Text Next rCell MultiCat = Mid(MultiCat, Len(sDelim) + 1) End Function
Derefter brugte jeg funktionen i nedenstående formel til at håndtere orddelingen.
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.