Avatar billede DB7 Juniormester
27. juli 2017 - 10:19 Der er 5 kommentarer

Udskift data i ét excel-ark, tilføj i andet

Jeg har tre worksheets i excel. For nemhedens skyld kalder vi dem worksheet 1,2 og 3. Worksheet 2 linkes direkte til worksheet 1, og der er de samme rækker og kolonner. Dvs. at når man taster noget i feltet C1 i worksheet 1, skal C1 også udfyldes i worksheet 2. Når man udskifter dataen i C1 i worksheet 1, skal det ligeledes udskiftes i worksheet 2. Den del er enkel nok. I worksheet 3 ønsker jeg derimod, at både den oprindelige samt den nye tekst skal beholdes.

Fx, hvis man i C1 i worksheet 1 skriver "Lars", bør C1 i worksheet 2 også være "Lars". Hvis man skifter "Lars" til "Hans" i worksheet 1, bør det samme ske i worksheet 2. I worksheet 3 derimod, ønsker jeg at der i række 1 står "Lars", mens der i række 2 står "Hans". Der må derudover gerne være et felt ved siden af navnet, hvor det fremgår om det er det nuværende eller gamle navn.

Er der nogen forslag til hvordan det kan lade sig gøre? På forhånd tak!
Avatar billede Jan Hansen Ekspert
27. juli 2017 - 10:40 #1
worksheet 3
A1 "Kombinavn"
A2 " Nyt Navn"
A3 " Gammel navn"

B1 =B1 & "," & sheet1!C1
B2 =sheet1!C1
B3 =MIDT(B1;FIND(",";B1;1)+1;LÆNGDE(B1)-FIND(",";B1;1))

ej testet

Mvh Jan
Avatar billede DB7 Juniormester
27. juli 2017 - 11:06 #2
Tak for svar Jan. Jeg er dog i tvivl om formlen i B1 - det er en cirkulær reference. Så vidt jeg kan se, vil der altid i det felt stå 0. Hvordan sørger jeg for, at det gamle navn bliver gemt, og ikke bare udskiftet med et nyt?
Avatar billede Jan Hansen Ekspert
27. juli 2017 - 13:25 #3
ups du har ret, så er vi nok ovre i en vba løsning. Noget ala

Private Sub Worksheet_Activate()
dim ws as WorkSheet
dim rCell as Range

set ws=Activesheet
set rCell=ws.Range("B1")

if not rCell.value=rCell.offset(1,0).value then rCell.offset(1,0).value=rCell.value

end sub

B1 er nyt navn
B2 er gammelt navn

ej testet

Jan
Avatar billede DB7 Juniormester
31. juli 2017 - 09:12 #4
Jeg kan desværre ikke få ovenstående til at virke. Er der andre forslag?
Avatar billede Jan Hansen Ekspert
31. juli 2017 - 09:48 #5
Indsæt i ark1's kode modul

Option Explicit
Dim wsArk1 As Worksheet, wsArk3 As Worksheet
Dim rArk1Cell As Range, rArk3Cell

Private Sub Worksheet_Change(ByVal Target As Range)
    Set wsArk1 = Sheets("Ark1")
    Set wsArk3 = Sheets("Ark3")
    Set rArk1Cell = wsArk1.Range("C1")
    Set rArk3Cell = wsArk3.Range("C1")
    If rArk1Cell.Value <> rArk3Cell.Value Then
        rArk3Cell.Offset(1, 0).Value = rArk3Cell.Value
    End If
        rArk3Cell.Value = rArk1Cell.Value
End Sub


Jan
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