Avatar billede Bønnen Juniormester
18. juni 2019 - 09:16 Der er 3 kommentarer og
1 løsning

Kopier del af en celle

Hej

Jeg har lidt udfordringer med at finde ud af hvordan jeg kopier kun en del af en celle. Eksempel:
Celle D3 = Invoice 48866
Celle D4 = Delivery note 48866
Celle D5 = Invoice 393393
Jeg vil gerne at den i celle A3 kun giver mig 48866 og i Celle A4 48866 og A5 393393

Dette skal gøres for alle rækker ned.
Jeg mangler bare at finde ud af hvordan jeg definere hvor mange tal eller bogstaver efter Invoice og Delevery note den skal kopier, da det er forskelligt hele vejen ned i regnearket.
Avatar billede finb Ekspert
18. juni 2019 - 10:02 #1
=strReverse(left(strReverse;5))
Avatar billede Bønnen Juniormester
18. juni 2019 - 10:30 #2
Jeg har fundet en anden løsning, men nok ikke den mest effektive. I kan se den nedenstående. Hvis nogen har input til at bedre løsning er jeg meget åben for det :) Tak!

Sub faktura()
Dim endrow As Integer, hej As String
Application.ScreenUpdating = False

endrow = Range("D" & Application.Rows.Count).End(xlUp).Row
Range("D2").Select
For i = 1 To endrow
If ActiveCell Like "*Delivery note*" Then
hej = ActiveCell.Value
hej = Replace(hej, "Delivery note", "")
ActiveCell = hej
ActiveCell.Offset(1, 0).Activate
Else
If ActiveCell Like "*Invoice*" Then
hej = ActiveCell.Value
hej = Replace(hej, "Invoice", "")
ActiveCell = hej

ActiveCell.Offset(1, 0).Activate
Else
If ActiveCell Like "*Credit note*" Then
hej = ActiveCell.Value
hej = Replace(hej, "Credit note", "")
ActiveCell = hej
ActiveCell.Offset(1, 0).Activate
Else
ActiveCell.Offset(1, 0).Activate
End If
End If
End If
Next i

End Sub
Avatar billede jens48 Ekspert
18. juni 2019 - 10:34 #3
Måske kan denne give dig lidt inspiration:

Sub InvoiceNo()
Dim C As Range
Dim L, X As Integer
For Each C In Range("D1:D100")
L = Len(C)
For X = L To 1 Step -1
If (Mid(C, X, 1)) = " " Then
C.Offset(0, -3) = Mid(C, X, 999)
GoTo A:
End If
Next
A:
Next
End Sub
Avatar billede RogerWilco Seniormester
19. juni 2019 - 18:23 #4
Når der nu er "åbnet" for VBA som løsningsmulighed, er det meget simpelt at isolere det sidste ord i en celle:

Function SidsteOrd(ps As String) As String
  SidsteOrd = Mid(ps, InStrRev(ps, " "))
End Function

Skal f.eks. så bare kaldes med formlen "=SidsteOrd(d3)"
Hvis feltet skal være numerisk, skal det være "=SidsteOrd(d3)+0"
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