Avatar billede jisch Mester
25. februar 2017 - 11:17 Der er 4 kommentarer og
1 løsning

VBA funktioner

Jeg har en kolonne (A1:A20) med talværdier. Der er tomme værdier i nogle af cellerne . Jeg vil gerne have en ny celle (A21) med den første numeriske talværdi og en celle (A22) med den sidste numeriske værdi.

Det har jeg løst på følgende måde i A21:

=HVIS.FEJL(INDEKS(A1:A20;SAMMENLIGN(SAND;INDEKS(A1:A20<>0;);0));"")

Og i A22

=HVIS.FEJL(FORSKYDNING(A1;SAMMENLIGN(MAKS(A1:A20)+1;A1:A20;1)-1;0);"")

Og så til mit spørgsmål. Hvordan kan jeg i VBA skrive 2 funktioner, der kan løse ovenstående så jeg f.eks. kan skrive:

I A21:
=V_First(A1:A20)

I A22:

=V_Last(A1:A20)
Avatar billede jisch Mester
25. februar 2017 - 11:50 #1
Excel: I A22 kan også skrives:

=HVIS.FEJL(SLÅ.OP(1;1/(A1:A20<>0);A$1:A$20);"")

Dette kan også håndtere alfanumeriske værdier.
Avatar billede finb Ekspert
25. februar 2017 - 12:29 #2
Kort udkast efter hukommelsen,
ret selv til:

for each cell in range ("a1:a20")
  cell.select
    if selection isNumeric then
      Range("a21")=selection
      exit for
    endif

range("a20").select
  for stepOpad = -1 to -20
      if selection.offset(stepOpad) isNumeric then
        range("a22")=selection.offset(stepOpad)
        exit for
    endif
exit for
Avatar billede jisch Mester
25. februar 2017 - 19:42 #3
>finb: Tak for inspiration. Jeg har omskrevet til denne løsning:

Function FirstLast(Rng As Range, Optional First = True) As Variant
'
' Range Rng: Vertical or Horizontal
'
Dim R As Variant
Dim C As Range

  R = ""
  For Each C In Rng
    C.Select
    If C.Value <> "" Then
      R = C.Value
      If First = True Then Exit For
    End If
  Next C
  FirstLast = R
End Function

I A21:
=FirstLast(A1:A20)
I A22
=FirstLast(A1:A20;Falsk)
Avatar billede finb Ekspert
01. marts 2017 - 08:50 #4
Tak for "point" ! finb
Avatar billede jisch Mester
01. marts 2017 - 16:01 #5
Til alle der bruger Function FirstLast:

Fejl: C.Select (væk med den!!)
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