Proszę o pomoc w Excelu

(sensu) #1

Domyślam się, że to łatwe, ale nie mam pomysłu jak to zrobić.

Mam plik w którym jest 30 kolumn i 1000 wierszy wypełnionych cyframi.
Jak sprawić, aby w 31 kolumnie wyświetlana była ilość, w których wierszach ile razy występuje dana liczba (60) w wierszu?

(krystian3w) #2

Licz jeżeli na zakresie wiersza w tej 31 kolumnie?

1 Like
(sensu) #3

Wytł☻umacz proszę.

Skąd to się wzięło? Ta buźka.

(krystian3w) #4

Wut…


LibreOffice niby umie spacje z Excel przerobić na znak męskiej i damskiej toalety.
Niby jakieś bugi jak plik ma dziwne kodowanie przy zapisie w Excel i Libre nie wie jakie wybrać i wybiera “najgorsze”.

(LORDEK) #5

Co do części:

To tu już przydałoby się jakieś makro. Robiłem coś podobnego i to jest pętla, która po znalezieniu szukanej liczby wpisze jej adres - lub część adresu - do komórki. Pamiętam, że robiłem to pętlą Do While gdzie warunkiem była niepusta zawartość komórki - akurat struktura arkusza pozwalała na taki warunek, bo kolumny były zapisane od góry do dołu bez pustych miejsc. Ustawiasz sobie pustą zmienną np. “A” i po każdym znalezieniu szukanej wartości, zmienna jest zmieniana na zawartość tej zmiennej + odnaleziona wartość czyli A = A + [wartość_komórki] + ", " - przecinek ze spacją jako separator kolejnych wartości. Na końcu przechodzisz o jeden wiersz niżej, pod pierwszy pusty by można było użyć makra ponownie i wpisać w komórkę zawartość zmiennej “A”, czyli nasze adresy.

Po wyjściu z pętli możesz wyciąć dwa ostatnie znaki, czyli ", " jak jesteś purystą.

Jak umiesz w VBA to sobie to jakoś kreatywnie ogarniesz.

(pocolog) #6

=LICZ.JEŻELI(A1:AD1;60)
Powtórz dla każdego wiersza, chyba że chcesz zliczyć dla wszystkich wierszy jednocześnie to
=LICZ.JEŻELI(A1:AD1000;60)

1 Like
(sensu) #7

Dzięki, jutro tak spróbuję.

(pocolog) #8

Strasznie coś przekombinowałeś albo ja nie rozumiem pytania…

(LORDEK) #9

Miałem minutę czasu.

Jeżeli chcesz wiedzieć, w których wierszach masz szukaną wartość w danej kolumnie to proszę:

Sub AAA()

Dim A

C = ActiveCell.Column

Cells(1, C).Select

Do While ActiveCell.Value <> ""

  If ActiveCell.Value = 2 Then
    A = A & ActiveCell.Row & ", "
 End If
 Selection.Offset(1, 0).Select

Loop

Selection.Offset(1, 0).Select

ActiveCell.Value = A

End Sub

Spoko. Nie jestem mistrzem kodziarstwa, więc można się przyczepiać do jakieś złej składni czy coś.

Szukaną wartość zmieniasz w linijce:

If ActiveCell.Value = 2 Then

W przykładzie mam 2.

(krystian3w) #10

To nie zwraca adresów komórek, pewnie po to makro.

(pocolog) #11

To pytanie jest tak napisane, że na dwoje babka wróżyła o co mu chodzi.

1 Like
(sensu) #12

Sorry, coś zmieniałem i wyszło byle co.
Powinno być:
aby w 31 kolumnie wyświetlana była ilość, ile razy występuje dana liczba (60) w wierszu

(Dimatheus) #13

Czyli tak, jak napisał @pocolog.

(sensu) #14

Działa, dzięki.

(sensu) #15

To jeszcze jedna rzecz. Jak to zrobić zamiast 60 dla zakresu liczb 0,01-0,99?

(LORDEK) #16

Musisz użyć innej funkcji.

=LICZ.WARUNKI(A1:AD1000;">0,01";A1:AD1000;"<0,99") - większe od 0,01 i mniejsze od 0,99

=LICZ.WARUNKI(A1:AD1000;">=0,01";A1:AD1000;"<=0,99") - większe, bądź równe 0,01 i mniejsze, bądź równe 0,99
2 Likes