Avatar billede overgreat Forsker
19. april 2017 - 10:45 Der 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)...

Håber I kan hjælpe.
Avatar billede anedi Ekspert
19. april 2017 - 11:11 #1
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.

Håber det kan bruges.

Vh
Anedi
Avatar billede overgreat Forsker
19. april 2017 - 12:04 #2
Hej

Desværre er jeg låst til excel 2010... har du ideer til løsning der....?

Mvh

Henrik
Avatar billede xl-Enthusiast Ekspert
19. april 2017 - 13:00 #3
Hvis ikke du får en løsning, kan du da eventuelt uploade filen, hvor du manuelt viser, hvad der skal stå i 5*5 tabellen?
Avatar billede xl-Enthusiast Ekspert
19. april 2017 - 14:57 #4
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
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