Avatar billede witzke Nybegynder
18. november 2009 - 13:41 Der er 2 kommentarer

Tekst i Excel på højt niveau!

Jeg skal sammenkæde nogle tekststykker i et excel ark, men pga. de store mængde tekst skal jeg finde en måde at gøre følgende på.


Lad os sige at i A1 står første del af teksten, f.eks. A1="Jeg skal have"

A2-A4 står tre forskellige varianter af tekstens anden del, f.eks. A2="And", A3="Flæskesteg", A4="Vegetar"

Og i A5 står så den sidste del af teksten, A5="til julefrokosten"

I B kolonnen er lig deltagernes valg, dvs. B1 er Kurt, der vælger and og B2 er Jens, der vælger Flæskesteg, osv.

Nu til spørgsmålet:

I C1 vil jeg gerne sammenkæde teksten, så C1 er det eneste sted man kan læse hele teksten. Dvs. jeg vil gerne finde en løsning på, hvordan jeg får teksten til at ændre sig efter det felt jeg nu har markeret.

F.eks. hvis jeg har markeret B1 skal teksten i C1="Jeg skal have And til julefrokosten" og hvis jeg markerer B2 bliver teksten i C1="jeg skal have Flæskesteg til julefrokosten"


Findes der en måde at gøre dette på?
Avatar billede tjacob Juniormester
18. november 2009 - 14:07 #1
Hvis du skal have en celle til at ændre sig ved selection er du nødt til at bruge VB:

Åben VB med Alt+F11
I ruden til venstre dobbeltklik på det aktuelle ark
I den store rude til højre indsæt følgende:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   
    Dim sMad As String
    Select Case Target.Address
        Case "$B$1"
            sMad = Range("A2").Value
        Case "$B$2"
            sMad = Range("A3").Value
        Case "$B$3"
            sMad = Range("A4").Value
        Case Else
            Exit Sub
    End Select
    Range("C1").Value = Range("A1").Value & " " & sMad & " " & Range("A5").Value

End Sub
Avatar billede tjacob Juniormester
18. november 2009 - 14:21 #2
Her er en bedre version: Du kan have så mange retter og navne det skal være. Det er en forudsætning at antal navne er lig antal retter, og at navne starter i B1 og at der ikke er huller i A eller B-kolonnen:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   
    If Not Target.Column = 2 Then Exit Sub
    If Target.Row > Range("B1").End(xlDown).Row Then Exit Sub
    Dim sMad As String, i As Long
    sMad = Range("A" & CStr(Target.Row + 1)).Value
    i = Range("A1").End(xlDown).Row
    Range("C1").Value = Range("A1").Value & " " & sMad & " " & Range("A" & CStr(i)).Value

End Sub
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