Hjælp til udvidet HVIS-formel

Løst
Dette emne indeholder 8 svar, har 3 stemmer og blev senest opdateret af  mirob9 5 år, 7 måneder siden.
Oprettet af
mirob9
Abonnent

Programmets navn: Excel (2013)
Spørgsmål: Hej Forum.
Jeg forsøger at lave en HVIS-formel, som jeg er i tvivl om, hvorvidt kan lade sig gøre.
Jeg har fem navne, som kan have en tilhørende værdi fx:


De fremgår af fane 2.

På fane 1, vil jeg gerne vise alle navnene, som har en tilhørende værdi dvs. A, B og E. Jeg kan sagtens lave en alm. formel: =HVIS(B3=0;””;A3), men det vil betyde, at listen vil have huller hvor C og D skulle have været. (I andre tilfælde kan der være flere huller, hvis fx A, B, C og D ikke har en værdi). Er der mon en smart måde at løse det her på? Eller kræver det fx VBA for at opnå en dynamisk løsning, hvor listen undgår huller?


kaj-emil
Abonnent

    Hej

    Du kan prøve,  de logiske funktioner OG, ELLER og IKKE.

    Jeg viser her for funktionen OG, her er alle værdier SANDE så funktionen returnerer værdien af A3, havde en af værdierne været FALSK ville funktionen returnerer ingenting.

    =HVIS(OG(B3=5000;B4=1000;B5=0;B6=0;B7=4500);A3;””)

    Med venlig hilsen

    Kaj-Emil


    mirob9
    Abonnent

      Hej Kaj-Emil.
      Mange tak for svaret 🙂
      Det virker fint, men det var ikke helt det jeg var ude efter. Måske jeg egentlig vil to ting:

      1. Kun vise det tilhørende bogstav, hvis der er en tal-værdi, som ikke er 0 (eller tomt).
      2. Hvis fx bogstav A, B og E vises, vil jeg gerne have de står under hinanden som en liste, og ikke med et tomt mellemrum for C og D.

      1. er der nu rimelig godt styr på, det virker fint. Men 2 har jeg lidt svært ved at finde en løsning på (hvis der er en, som ikke involverer kompliceret VBA kode).


      mirob9
      Abonnent

        Hej igen.

        Jeg fandt ud af en VBA kode, som sorterer de blivende værdier, alt efter hvad der slettes 🙂

        HenrikClausen
        HenrikClausen
        Komputer for alle

          Hej

          Den funderede jeg lidt over – men så havde du allerede fundet noget kode til det!

          Har du mulighed for at dele koden her, så andre læsere kan få glæde af den?


          kaj-emil
          Abonnent

            Hej

            Opgaven kan også løses, ved en kombination af funktionerne HVIS og LOPSLAG og nogle hjælpeceller, jeg viser her hvordan:

            Se billedet:

            I A2 indsættes 0
            I A3 indsættes formlen =HVIS($C3>0;$A2+1;$A2), der trækkes ned.

            I C3 indsættes 1 og i C4 indsættes 2, der trækkes ned.

            I F3 indsættes formlen =LOPSLAG($E3;$A$2:$C$7;2;0), der trækkes ned

            I G3 indsættes formlen =LOPSLAG($E3;$A$2:$C$7;3;0), der trækkes ned.

            Med venlig hilsen

            Kaj-Emil

            HenrikClausen
            HenrikClausen
            Komputer for alle

              Det var snedigt, Kaj-Emil!

              Kolonnerne A og E kan skjules, går jeg ud fra, så man kun ser cellerne med rigtigt indhold.


              kaj-emil
              Abonnent

                Tak Henrik for de pæne ord – og jo – jeg skulle have gjort det færdigt, det kommer så her:

                Kolonne A og E består af hjælpeceller og kan skjules gør følgende:

                Højreklik på A og venstreklik på Skjul, gør det samme for kolonne E.

                I mit tidligere svar står der:

                I C3 indsættes 1 og i C4 indsættes 2, der trækkes ned. C skal naturligvis erstattes med E.

                Med venlig hilsen

                Kaj-Emil


                mirob9
                Abonnent

                  God løsning, Kaj-Emil – det havde jeg ikke gennemskuet 🙂 Og væsentligt simplere end VBA.

                  Hvis nogen alligevel vil give sig i kast med VBA;
                  Kode der indsættes i det ark, hvor data fremgår som standard:

                  Private Sub Worksheet_Change(ByVal Target As Range)
                  Dim actwks As Worksheet
                  Set actwks = ActiveSheet
                  Application.ScreenUpdating = False

                  If Target.Address = “$C$32” Then
                  Call Module2.sort
                  Application.ScreenUpdating = False
                  End If

                  If Target.Address = “$C$34” Then
                  Call Module2.sort
                  End If
                  If Target.Address = “$C$36” Then
                  Call Module2.sort
                  End If
                  If Target.Address = “$C$38” Then
                  Call Module2.sort
                  End If
                  If Target.Address = “$C$40” Then
                  Call Module2.sort
                  End If
                  actwks.Activate
                  Application.ScreenUpdating = True

                  Set actwks = Nothing
                  End Sub

                  Kode der indsættes i modulet:

                  Sub sort()

                  Worksheets(“Beregning*”).Activate
                  ‘Worksheets(“Beregning”).Range(“C34:C38”).Select
                  Range(“C34:E38”).sort Key1:=Range(“C34”), Order1:=xlDescending, Header:=xlNo

                  End Sub

                  *Beregning er det ark, hvor data skal vises (data, som ikke indeholder 0)

                  Forummet 'PROGRAMMER' er lukket for nye emner og svar.