PDA

Zobacz pełną wersję : Excel - pomoc



ksviper
28-06-2012, 15:18
Witam,
mam problem ze skonstruowaniem formuły w Excelu i Calc.
Mam tabelę:


Lp.|Nazwisko |Nr grupy
------------------------
1.|Nowak |1
2.|Kowalski |2
3.|Wiśniewski |3
4.|Dąbrowski |1
5.|Lewandowski|3
6.|Wójcik |2
7.|Kamiński |2
8.|Kowalczyk |1
9.|Zieliński |3
10.|Szymański |4

Chciałbym teraz utworzyć formułę, która do komórki wpisze mi wszystkie nazwiska z danej grupy:


Nr grupy|Osoby
-----------------------------------------
1|Nowak Dąbrowski Kowalczyk
2|Kowalski Wójcik Kamiński
3|Wiśniewski Lewandowski Zieliński
4|Szymański

Nazwisk jest dość sporo, nie ma na ich ilość limitu, podobnie z grupami.
Próbowałem z funkcjami Złącz.teksty i Jeżeli ale formuły są ogromne. W Excelu jeszcze dają radę ale Calc ma ograniczenie do 512 operatorów, nawiasów itp i dość szybko "wymięka".
Ma ktoś na to pomysł?

seler
28-06-2012, 15:51
vlookup?

barracuda
28-06-2012, 16:15
Może tabela przestawna...

ropusz
28-06-2012, 16:18
Wpisz sobie w VBA taką poniższą funkcję. Nie jest moża najbardziej elegancka ale powinna działać :)

Function cudowna(kom As Double)
Application.Volatile
' tu ustawiasz nr wiersza i nr kolumny zakresu twoich danych, przykładowo jeśli nazwiska z nr grupy masz w zakresie b2:c11 to w1 odpowiada za pierwszy wiersz czyli 2, w2 to ostatni wiersz czyli 11, k1 to pierwsza kolumna czyli 2 a k2 to ostatnia kolumna czyli 3
w1 = 2
w2 = 11
k1 = 2
k2 = 3
n = w2 - w1 + 1
tekst = Null
For i = 1 To n
If Cells(w1 + i - 1, k2) = kom Then tekst = tekst & " " & Cells(w1 + i - 1, k1)
Next i
cudowna = tekst
End Function

W arkuszu wpisujesz gdzieś w jednej kolumnie 1, 2, 3 i 4 i w komórce obok funkcję cudowna wskazującą na dany nr grupy.

ksviper
28-06-2012, 20:29
vlookup?
wyszukuje tylko jedną pozycję i chyba tyle

Może tabela przestawna...
nigdy z tego nie korzystałem i nie wiem nawet jak zacząć ;)

Wpisz sobie w VBA taką poniższą funkcję. Nie jest moża najbardziej elegancka ale powinna działać :)

Function cudowna(kom As Double)
Application.Volatile
' tu ustawiasz nr wiersza i nr kolumny zakresu twoich danych, przykładowo jeśli nazwiska z nr grupy masz w zakresie b2:c11 to w1 odpowiada za pierwszy wiersz czyli 2, w2 to ostatni wiersz czyli 11, k1 to pierwsza kolumna czyli 2 a k2 to ostatnia kolumna czyli 3
w1 = 2
w2 = 11
k1 = 2
k2 = 3
n = w2 - w1 + 1
tekst = Null
For i = 1 To n
If Cells(w1 + i - 1, k2) = kom Then tekst = tekst & " " & Cells(w1 + i - 1, k1)
Next i
cudowna = tekst
End Function

W arkuszu wpisujesz gdzieś w jednej kolumnie 1, 2, 3 i 4 i w komórce obok funkcję cudowna wskazującą na dany nr grupy.
nie chciałem bawić się w VBA bo to ma działać także w OpenOffice. Po otwarciu pliku w OO nie liczy tych funkcji. Ale pod Excelem działa wyśmienicie :) Sam już miałem napisać sobie taką funkcyjkę ale dobra duszyczka pomogła :)
Dzięki za pomoc.