Kopiowanie wartości komórek o tym samym kolorze

Na dzisiejszej lekcji pokażę Ci w jaki sposób zaczytywać za pomocą makra wartości komórek o tym samym kolorze i kopiować je do zaznaczonej komórki. Poprzednio pokazałem Ci jak porównywać z sobą kolory dwóch komórek i liczyć ile jest komórek o tym samym kolorze. Tym razem będzie lekkie rozszerzenie.

Przerobiłem już ostatnio użyty arkusz i wpisałem imiona zamiast liczb, a gama kolorów w kolumnie D pozostaje bez zmian. Teraz przechodzę do Edytora Visual Basic i dodaję nowy moduł. Rozpoczynam program od wpisania nowej procedury.

Deklaracja zmiennych

Na początku deklaracja zmiennych. Zmienna i która będzie służyła do tego aby pętla przeszła przez wszystkie komórki w kolumnie A, oraz zmienna k, do użytku drugiej pętli przechodzącej po komórkach w kolumnie D. Zmienne i, oraz k przyjmą typ integer. Potrzebuję jeszcze liczby typu Double, ponieważ kolory w VBA przyjmują duże wartości liczbowe. Pozostaje ostatnia zmienna typu string, ponieważ ciąg znaków kopiowanych z różnych komórek i wstawianych do jednej może być wyłącznie tekstem. Zwłaszcza, że zamierzam oddzielić je od siebie przecinkiem i spacją.

Zaczynam od zaznaczenia komórki D1, czyli pierwszej w palecie kolorów. Otwieram pierwsza pętlę For k=1 to 3, która będzie przechodzić po komórkach od D1 do D3. Teraz wstawiam kolejną pętlę For i=1 to 10, która będzie przechodziła po komórkach od A1 do A10.

Przypisanie wartości koloru

Przypisuję wartość zmiennej kolor. Wartością zmiennej wartość (mam nadzieję, że nie zrobi się to zbyt zagmatwane ?) jest wartość koloru wypełnienia tła komórki. Teraz wpisuję warunek, który będzie sprawdzał, czy wartość koloru wypełnienia komórki i,1 jest równa wartości zmiennej kolor (wartość koloru wypełnienia komórki D1). Jeśli są takie same to zmienna wartość przyjmuje to co jest w komórce A1. Dodaję przecinek i spację. Kończę warunek.

Teraz potrzebuję jeszcze jednego warunku, który dotyczy zawartości komórek w kolumnie D. Jest on potrzebny, aby kolejne przejście pętli nie nadpisywało aktualnej zawartości komórki D1.

Warunek sprawdza, czy aktywna komórka ma jakąś zawartość i jeśli tak jest, to zostanie zamienione na aktualną zawartość, oraz to co aktualnie przechowuje zmienna wartość. Na koniec czyszczę zmienną wartość.

Teraz kończę pętlę wewnętrzną i dodaję kawałek kodu, który usunie ostatni przecinek i spację. Do tego używam funkcji tekstowych Left i Len, które skopiują zawartość aktywnej komórki i wstawią o dwa znaki mniej, czyli odejmą przecinek i spację na końcu.

Przed nowym przejściem pętli zaznaczana jest komórka D2.

A jeśli wolisz wideo to zapraszam na mój kanał YT:

Spodobał Ci się artykuł ? Udostępnij go znajomym.

Share on facebook
Share on linkedin
Share on twitter

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *