31. januar 2013 - 17:35Der er
12 kommentarer og 1 løsning
Automatisk konvertere tal til konkret tekst i Excel
Hej Eksperter
Jeg har en konkret udfordring i Excel som jeg håber I kan hjælpe mig med. Jeg søger helst et helt konkret forslag til en løsning.
Jeg arbejder med et Excel-ark hvor jeg regelmæssigt henter indregistreringer fra brugerne ned fra et online register. Hver indregistrering indeholder diverse oplysninger, og flere af oplysningerne omsættes i databasen til en talkode, dvs. når jeg læser de enkelte registreringer, kan f.eks. kategori A indeholde et tal mellem 1 og 100, kategori B kan indeholde et tal mellem f.eks. 1 og 50 osv. Hver kategori ordnes i kolonner i Excel-arket mens de enkelte registreringer ordnes i rækker. De øvrige kategorier kan indeholde tekst, dvs. omsættes ikke fra kode til tekst.
Jeg søger en løsning hvormed Excel automatisk kan omsætte talkoderne til tekst løbende som jeg indtaster registreringerne. I Excel-arket findes der et separat ark hvor der angives hvilken tekst de enkelte talkoder skal omsættes til (Kode X = Tekst Y), og indtil nu har jeg manuelt omsat indregistreringerne fra databasen fra kode til tekst løbende som der er kommet indregistreringer.
Jeg forestiller mig en løsning hvor de enkelte koder straks omsættes til tekst så snart jeg kopierer indregistreringer ind i arket, dvs. ikke en manuel "find og erstat"-løsning da dette i praksis er næsten ligeså tidskrævende som den nuværende metode hvor jeg manuelt omsætter koder til tekst.
Jeg håber I kan hjælpe - spørg endelig hvis tvivl.
Det lyder som om det meste effektive vil være en VBA-kode, der reagerer på ændringer i en celle. Hvis indholdet er tal findes den tilhørende tekst fra det relevante ark.
Men jeg tror måske det kan laves med "hvis" og "loopslag". Men det kræver at kriterierne for de aktuelle koder og hvad der følger med ligger i et andet ark, der køres loopslag i. Det er i hvert fald på den måde min faktura skabelon virker. Med min er det teksten der returnerer noget tekst og værdi, hvor din skal levere tekst ud fra en given talkode.
Har konstrueret en model, der arbejder på følgende måde: - et enkelt tal eller et område af tal/tekst kan indsættes via udklipsholder i ark1. - På ark2 er der anført tekster, der identificeres via rækkenr og kolonne. - VBA-koden identificere det indsatte og erstatter tal med teksten fra den tilsvarende række og kolonne på ark2.
Nu kan du lige se på den første version - koden er anbragt under Ark1:
Dim kolNr As Integer, værdi As Integer, tekst As String Dim cc, flag As Boolean Dim ark2 As Object Private Sub Worksheet_Change(ByVal target As Range) If flag = False Then If InStr(target.Address, ":") = 0 Then Range(target.Address).Select End If
For Each cc In Selection.Cells tekst = oversætCelle(cc.Column, cc.Value) Cells(cc.Row, cc.Column) = tekst flag = False Next End If End Sub Private Function oversætCelle(kol, værdi) If IsNumeric(værdi) = True And værdi <> "" Then tekst = findTekst(kol, værdi) oversætCelle = tekst Else oversætCelle = værdi End If flag = True End Function Private Function findTekst(kolNr, værdi) Dim ræk As Integer Set ark2 = ActiveWorkbook.Sheets("Ark2") findTekst = ark2.Cells(værdi, kolNr) End Function
Jeg er stort set nybegynder i makroer i Excel, så jeg kan se jeg bliver nødt til at stille lidt opklarende spørgsmål :)
1) Skal jeg ændre nogen af værdierne i din kode i mit eget ark? 2) Skal jeg bare gå ind i VB ved at trykke alt+F11 og så sætte koden direkte ind under "Ark 1"? Eller skal jeg gå en anden vej ind i VB?
Jeg har afprøvet koden, men jeg kan se at jeg burde have været mere specifik i min første formulering af problemet, så jeg takker for dit arbejde og giver dig point som lovet, og så opretter jeg en ny tråd og sætter et link herinde til den nye tråd
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.