Avatar billede jacob172100 Praktikant
31. januar 2013 - 17:35 Der 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.

Mvh. Jacob
Avatar billede supertekst Ekspert
31. januar 2013 - 18:17 #1
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.
Avatar billede 220661 Ekspert
31. januar 2013 - 18:18 #2
Skal lige sige jeg ikke kan opsætte det.

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.
Avatar billede 220661 Ekspert
31. januar 2013 - 18:24 #3
Nu blander jeg mig ikke mere, da du er kommet i gode hænder.
Har selv haft fornøjelsen af superteksts færdigheder, med min faktura :-)
Avatar billede supertekst Ekspert
31. januar 2013 - 18:25 #4
Tak for det..
Avatar billede jacob172100 Praktikant
31. januar 2013 - 20:47 #5
supertekst -> Har du et forslag til et sted hvor jeg kan finde mere om emnet?
Avatar billede supertekst Ekspert
31. januar 2013 - 22:59 #6
Vender tilbage i morgen..
Avatar billede supertekst Ekspert
01. februar 2013 - 08:42 #7
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.

Lyder det som det ønskelige eller?
Avatar billede jacob172100 Praktikant
13. februar 2013 - 18:13 #8
Hej supertekst.
Ja, det lyder som det ønskelige. Hvis jeg skulle ønske yderligere kode, tilbyder jeg flere points.
Mvh. Jacob172100
Avatar billede supertekst Ekspert
13. februar 2013 - 23:08 #9
Hej Jacob

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
Avatar billede jacob172100 Praktikant
14. februar 2013 - 01:42 #10
Hej supertekst

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?
Avatar billede supertekst Ekspert
14. februar 2013 - 09:08 #11
Hej

1. Skulle ike være nødvendigt
2. Eller højreklik på ark1 / Vis programkode /

Du skal også ændre Excel-instillinger ved anvendelse af makro
Avatar billede jacob172100 Praktikant
15. februar 2013 - 23:40 #12
Hej igen

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
Avatar billede supertekst Ekspert
16. februar 2013 - 10:43 #13
ok..
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

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