W programie Excel, w jaki sposób uzyskać listę komórek do wyświetlenia w oparciu o funkcję if?

0

Mam listę ilości z kolumną z opisem. Liczą drzwi w oparciu o rozmiar. Chciałbym wypisać listę (najlepiej oddzieloną przecinkami) numerów opisowych z odpowiednimi numerami. Oto przykład tego, co mam:

 A | B   | C   | D   | E   | F   |

Apt| 2'0 | 2'6 | 3'0 | 4'0 | 5'0 |

44 | 0   | 1   | 0   | 1   | 1   |

47 | 0   | 1   | 0   | 0   | 2   |

48 | 0   | 1   | 1   | 1   | 1   |

50 | 1   | 0   | 0   | 1   | 1   |

Próbuję go wygenerować listę numerów mieszkań pogrupowanych według rozmiaru, tak by brzmiała następująco:

2'0 | 50 (1)

2'6 | 44 (1), 47 (1), 48 (1)

3'0 | 48 (1)

4'0 | 44 (1), 48 (1), 50 (1)

5'0 | 44 (1), 47 (2), 48 (1), 50 (1)

Próbowałem wykonać funkcję IF w następujący sposób:

=IF(B2:B5>0,A3:A5,)

ale zwraca tylko pierwszą znalezioną wartość. Jakieś sugestie?

pb315
źródło

Odpowiedzi:

0

Spróbuj użyć PRZESUNIĘCIE () jak w
=IF(B2:B5>0;A2:A5 &", "& OFFSET(A2:A5;0;1);)

Hannu
źródło
Obecnie nie potrafię wymyślić sposobu na stworzenie listy. Prawdopodobnie będziesz potrzebował VBA (makro).
Hannu
0

Dzięki temu możemy uzyskać triki. Wkleiłem twoje dane do zakresu A1:F5. Poniżej stworzyłem tabelę, której wynik końcowy wygląda jak ten plik CSV:

Door,Apts,44,47,48,50
2'0,50 (1),,,,50 (1), 
2'6,44 (1), 47 (1), 48 (1),44 (1), ,47 (1), ,48 (1), ,
3'0,48 (1),,,48 (1), ,
4'0,44 (1), 48 (1), 50 (1),44 (1), ,,48 (1), ,50 (1), 
5'0,44 (1), 47 (2), 48 (1), 50 (1),44 (1), ,47 (2), ,48 (1), ,50 (1), 

Dla Door pole, właśnie skopiowałem twoje rozmiary drzwi i wkleiłem transponowane
W nazwach pól (44 447, 50, 50) zrobiłem to samo z twoimi numerami apt
Dla Apts pole, formuła dla pierwszego wiersza jest następująca:

=LEFT(CONCATENATE(C11,D11,E11,F11),LEN(CONCATENATE(C11,D11,E11,F11))-2)

Wystarczy tylko skompilować dane z pól po prawej stronie
W przypadku tych pól wzór dla pierwszej komórki jest następujący:

=IF(INDEX(OFFSET($A$2:$A$5,0,MATCH($A11,$1:$1,0)-1),MATCH(C$10,$A$2:$A$5,0))>0,C$10 & " (" &INDEX(OFFSET($A$2:$A$5,0,MATCH($A11,$1:$1,0)-1),MATCH(C$10,$A$2:$A$5,0)) & "), ","")

Wygląda naprawdę długo, ponieważ duża porcja jest powtarzana. Ten kawałek to:

INDEX(OFFSET($A$2:$A$5,0,MATCH($A11,$1:$1,0)-1),MATCH(C$10,$A$2:$A$5,0))

Wszystko, co robi, to pobranie wartości ze stołu A1:F5 dla tego konkretnego rozmiaru drzwi i apt
Zastępowanie tego kawałka właśnie INDEX(...) otrzymujemy:

=IF(INDEX(...)>0,C$10 & " (" &INDEX(...) & "), ","")

Więc wyszukuje wartości i zwraca puste, jeśli jest zero lub coś w tym stylu 50 (1), jeśli nie jest
The Apts field następnie grupuje je wszystkie razem i usuwa końcowy przecinek + spację


Oczywiście może to lub nie zadziałać, w zależności od wielkości zbioru danych. Jednak przypuszczam, że liczba mieszkań i drzwi nie zmienia się w najbliższym czasie, więc warto ją mieć na jedną zmianę.

Engineer Toast
źródło