19. april 2017 - 10:45Der er
3 kommentarer og 1 løsning
Lave matrix som lister værdier i felterne
Jeg har liste med tre kolonne. A= ID B= Sandsynlighed (værdi = 1-5) C= Konskvens (Værdi = 1-5) D= samlet værdi ( (B*100)+C
I matrix jeg laver... vil jeg gerne lave en 5*5 tabel (sandsynlighed ene akse og konsekvens den anden akse).....
For hvert felt i matrixen vil jeg gerne liste (sepereret med ;) hvilke id'er der er for rækkerne som har værdien..... F.eks. Sandsynlighed 1 og Konsekvens 1 er dem med værdien 101)....
Hvordan laver jeg uden VBA formel som viser de ideer i feltet som er lig med eks 101.... og skal være dynamisk så den tager alle de rækker med som der er skrevet i.... (på den oprindelige liste)...
Er du i 2016-versionen? Nødvendigt for brug af TEXTJOIN-funktion I så fald kan du lave din matrix et tilfældigt sted i arket med sandsynglihed nedad (tallene 1-5) og konsekvens henad (tallene 1-5). I mit eksempel herunder er matricen oprettet i F1:K6. Marker første celle (G2 i eksemplet) og indsæt følgende i formellinjen: =TEXTJOIN(";";TRUE;IF(($D$2:$D$100)=$F2*100+G$1;$A$2:$A$100;"")) (dansk version hedder vist TEKST.KOMBINER og SAND) Herefter holder du CTRL+SHIFT nede inden du trykker ENTER.
Endelig kan du trække formlen til højre og ned, så udfyldes hele matricen.
I Excel 2010 kan du bruge følgende let ændrede udgave af anedis formel:
=ConcatenateIF(($D$2:$D$100);$F3*100+G$1;$A$2:$A$100;",") (matrixindtastning ikke nødvendig)
hvor ConcatenateIF er en brugerdefineret funktion som, så vidt jeg ved, stammer fra en tysker ved navn HansV:
Function ConcatenateIf(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant Dim xResult As String On Error Resume Next If CriteriaRange.Count <> ConcatenateRange.Count Then ConcatenateIf = CVErr(xlErrRef) Exit Function End If For i = 1 To CriteriaRange.Count If CriteriaRange.Cells(i).Value = Condition Then xResult = xResult & Separator & ConcatenateRange.Cells(i).Value End If Next i If xResult <> "" Then xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1) End If ConcatenateIf = xResult Exit Function End Function
Synes godt om
Ny brugerNybegynder
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.