Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 64056 Skopiuj do schowka Formatowanie warunkowe dla wybranej kolumny
Autor Wiadomość
SpiNNer
forumowicz


Posty: 22
Wysłany: 06-02-2019, 15:14   Formatowanie warunkowe dla wybranej kolumny

Cześć,

Mam problem ze stworzeniem makra, które będzie działało w następujący sposób.

- po wklejeniu danych do arkusza (dane z nagłowkami np. Imię, Nazwisko, Adres Email, Nazwa firmy), użytkownik chce wybierając np. kolumnę Adres Email, które adresy się powtarzają i chce widzieć, że zaznaczą się one formatowaniem warunkowych (?) na jakiś kolor. W przypadku gdy użutkownik chce sprawdzić po Nazwiskach, chciałby żeby zaznaczyły mu się kolorem puste komórki za pomocą formatowania warunkowego (?) kolorem.

Kolejność kolumn może być różna np. w jednym zestawie danych Imię będzie w pierwszej kolumnie, ale już w innym zestawie danych Imię może być w kolumnie drugiej itp. Chodzi o to, żeby użytkownik mógl wybrać kolumnę i zastosować na niej odpowiednie formatowania komórek dla danego typu kolumny.

Wiecie może jak to zrobić?

Pozdrawiam
ID posta: 362075 Skopiuj do schowka
 
 
umiejead 
Excel Expert


Wersja: Win Office 2013
Pomógł: 351 razy
Posty: 1872
Wysłany: 06-02-2019, 15:25   

Załącz przykładowy plik.
_________________
.
Jak poprawnie opisać problem: http://www.excelforum.pl/...ika-vt59262.htm
I dbajmy - proszę - o poprawną polszczyznę.
ID posta: 362076 Skopiuj do schowka
 
 
SpiNNer
forumowicz


Posty: 22
Wysłany: 06-02-2019, 22:27   

Przykładowy plik w załączeniu.

Czy jest możliwość żeby nie robić tego dla każdej kolumny osobno?

Tylko np. użytkownik chce wrzucić kolor tam gdzie są puste komórki w kolumnie C - klika makro i mu się zaznacza. Jeśli jednak chce znaleźć puste komórki w kolumnie A, to klika makro i w wybranej przez niego kolumnie zaznaczają mu się puste wartości.

Podobnie dla powtarzających się nazw.

probny.xlsm
Pobierz Plik ściągnięto 28 raz(y) 21.59 KB

ID posta: 362095 Skopiuj do schowka
 
 
Tadek
Excel Expert


Pomógł: 1565 razy
Posty: 4932
Wysłany: 07-02-2019, 07:53   

Dla pustych np. tak:
Kod:
Sub puste1()
Dim kol As String
Dim ost As Long
ost = Cells(Rows.Count, "A").End(xlUp).Row
 kol = InputBox("Podaj kolumnę, np. B, C", "Symbol kolumny", "B")
 If kol = vbNullString Then
 Exit Sub
 End If
 If IsNumeric(kol) Then
 MsgBox "Podałeś numer, a nie symbol kolumny!", vbInformation, "BŁĄD"
 Exit Sub
 End If
If ost < 5 Then Exit Sub
Range("A5:E" & ost).Interior.Color = xlNone
    Range(Cells(5, kol), Cells(ost, kol)).SpecialCells(xlCellTypeBlanks).Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub
Dla duplikatów podobnie.
ID posta: 362110 Skopiuj do schowka
 
 
SpiNNer
forumowicz


Posty: 22
Wysłany: 07-02-2019, 22:29   

Super! Dziękuję. A mógłbyś mi jeszcze pokazać jak to samo zrobić z tymi duplikatami?
ID posta: 362177 Skopiuj do schowka
 
 
Tadek
Excel Expert


Pomógł: 1565 razy
Posty: 4932
Wysłany: 08-02-2019, 07:40   

Np. tak:
Kod:
Sub duplikat1()
Dim kol As String
Dim ost As Long
ost = Cells(Rows.Count, "A").End(xlUp).Row
 kol = InputBox("Podaj kolumnę, np. B, C", "Symbol kolumny", "B")
 If kol = vbNullString Then
 Exit Sub
 End If
 If IsNumeric(kol) Then
 MsgBox "Podałeś numer, a nie symbol kolumny!", vbInformation, "BŁĄD"
 Exit Sub
 End If
If ost < 5 Then Exit Sub
Range("A5:E" & ost).FormatConditions.Delete
    With Range(Cells(5, kol), Cells(ost, kol))
        .FormatConditions.AddUniqueValues
        .FormatConditions(.FormatConditions.Count).SetFirstPriority
        .FormatConditions(1).DupeUnique = xlDuplicate
            With .FormatConditions(1).Font
                .Color = -16383844
                 .TintAndShade = 0
             End With
            With .FormatConditions(1).Interior
                 .PatternColorIndex = xlAutomatic
                 .Color = 13551615
                 .TintAndShade = 0
             End With
        .FormatConditions(1).StopIfTrue = False
    End With
    Range("D1").Select
End Sub
ID posta: 362187 Skopiuj do schowka
 
 
SpiNNer
forumowicz


Posty: 22
Wysłany: 11-02-2019, 14:42   

Super, wielkie dzięki!

A jest możliwość wybrania kilku kolumn np. po przecinku A,C,E zamiast jednej?
ID posta: 362361 Skopiuj do schowka
 
 
SpiNNer
forumowicz


Posty: 22
Wysłany: 11-02-2019, 15:58   

...albo żeby poprzednie wyniki zostawały? np. zaznaczam puste komórki w kolumnie B, chcę teraz wybrać puste komórki w kolumnie C i chcę aby formatowanie w kolumnie B zostało.
ID posta: 362363 Skopiuj do schowka
 
 
Tadek
Excel Expert


Pomógł: 1565 razy
Posty: 4932
Wysłany: 12-02-2019, 08:03   

W makrze puste1 usuń ten fragment kodu:
Kod:
 Range("A5:E" & ost).Interior.Color = xlNone

a w makrze duplikat1 usuń to:
Kod:
Range("A5:E" & ost).FormatConditions.Delete
ID posta: 362413 Skopiuj do schowka
 
 
SpiNNer
forumowicz


Posty: 22
Wysłany: 12-02-2019, 09:09   

Dzięki, problem jednak pojawia się w sytuacji gdy przy zaznaczeniu pustych komórek stworzonym makrem, zdecyduję się coś w tą komórkę wpisać, wtedy ponawiając makro zaznaczające puste komórki, pozostawi nadal zaznaczone na kolorowo komórki, które przed chwilą uzupełniłem. Przy formatowaniu warunkowym tego problemu nie ma.
ID posta: 362416 Skopiuj do schowka
 
 
Tadek
Excel Expert


Pomógł: 1565 razy
Posty: 4932
Wysłany: 12-02-2019, 09:21   

Przecież tak chciałeś :niee
Ostatnio zmieniony przez Tadek 12-02-2019, 09:30, w całości zmieniany 2 razy  
ID posta: 362419 Skopiuj do schowka
 
 
SpiNNer
forumowicz


Posty: 22
Wysłany: 12-02-2019, 09:27   

Częściowo tak, bo rezultaty makra zostają i to jest ok. Chodzi mi tylko o to, że jak chcę zastosować makro na puste komórki ponownie, a w międzyczasie dokonam zmiany w komórkach to nie "nadpisuje" poprzedniego rozultatu.

Tzn. jeśli np w kolumnie B komórki B8, B9 będą puste i włącze makro to zostaną one zaznaczone kolorem. Jeśli po tym uzupełnię np komórkę B9, to po puszczeniu makra na puste komórki nadal zaznaczona zostanie komórka B8 i B9, a zależałoby mi na tym, żeby po tej zmianie zaznaczona została tylko komórka B8 jako pusta.
ID posta: 362420 Skopiuj do schowka
 
 
Tadek
Excel Expert


Pomógł: 1565 razy
Posty: 4932
Wysłany: 12-02-2019, 09:32   

W makrze puste1 to:
Kod:
    Range("A5:E" & ost).Interior.Color = xlNone

zamień na to:
Kod:
      Range(Cells(5, kol), Cells(ost, kol)).Interior.Color = xlNone
Zobacz w załączniku.

probny (2).xlsm
Pobierz Plik ściągnięto 21 raz(y) 19.05 KB

ID posta: 362421 Skopiuj do schowka
 
 
SpiNNer
forumowicz


Posty: 22
Wysłany: 20-03-2019, 17:08   Przeszukiwanie kolumn

Cześć,

W obecnym kodzie (załącznik) przeszukuję kolumny i zaznaczam duplikaty na żółto oraz puste komórki na żółto.

Chciałbym też zaznaczyć wszystkie komórki z danej kolumny, które zawierają jakieś wyrazy np. gmail. Czy mogę w jakiś sposób dodać kod, który będzie mi zaznaczał komórki, które zawierają elementy tekstu, które mnie interesują? Wyraz gmail jest tylko przykładem, interesowałyby mnie również inne elementy wyrazów tj. przecinki, kropki itp.

Napotykam również problem w sytuacji, gdy kod szuka duplikatów lub pustych komórek, a ich nie ma i wtedy wyskakuje mi error. Czy da się to uwzględnić w taki sposób, że jeśli nie znajdzie duplikatów, ale znajdzie puste to będzie ok. Ale jeśli nie znajdzie ani duplikatów, ani pustych, ani zdefiniowanych przeze mnie wyrazów to pojawi się msgbox z informacją, że nic nie znalazło?

Dzięki!

Kod:


Dim kol As String
Dim ost As Long

Sub combined()

    ost = Cells(Rows.Count, "A").End(xlUp).Row
    kol = InputBox("Enter column symbol: A, B, C...etc.", "Column symbol", "B")

    If kol = vbNullString Then
        MsgBox "You did not enter any column symbol!", vbInformation, "ERROR"
    Exit Sub
    End If
   
    If IsNumeric(kol) Then
        MsgBox "You entered number, please enter column symbol!", vbInformation, "ERROR"
    Exit Sub
    End If

    If ost < 5 Then Exit Sub
   
'for empty cells

        Range(Cells(6, kol), Cells(ost, kol)).Interior.Color = xlNone
        Range(Cells(6, kol), Cells(ost, kol)).SpecialCells(xlCellTypeBlanks).Select
   
        With Selection.Interior
         .Color = rgbYellow
        End With
   

'for duplicated cells
 
        With Range(Cells(6, kol), Cells(ost, kol))
        .FormatConditions.AddUniqueValues
        .FormatConditions(.FormatConditions.Count).SetFirstPriority
        .FormatConditions(1).DupeUnique = xlDuplicate
             
             With .FormatConditions(1).Interior
             .Color = rgbYellow
             End With
             
        .FormatConditions(1).StopIfTrue = False
   
    End With
    Range("A1").Select

End Sub





przykladowy.xlsm
Pobierz Plik ściągnięto 20 raz(y) 17.99 KB

ID posta: 364637 Skopiuj do schowka
 
 
SpiNNer
forumowicz


Posty: 22
Wysłany: 21-03-2019, 10:47   

Cześć,

Udało mi się jakoś połączyć wyszukiwanie duplikatów, pustych komórek oraz wyszukiwanie elementów tekstu w komórce.


Niestety nadal napotykam problem w momencie, gdy nie ma pustych komórek - wtedy zwraca mi error. Jak mogę pominąć ten error aby kod mógł dalej robić swoje? ;)

Prawdopodobnie dałoby się jakoś zagnieździć część z wyszukiwaniem elementów tekstu?

Kod:


Dim kol As String
Dim ost As Long

Sub combined()

    ost = Cells(Rows.Count, "A").End(xlUp).Row
    kol = InputBox("Enter column symbol: A, B, C...etc.", "Column symbol", "B")

    If kol = vbNullString Then
        MsgBox "You did not enter any column symbol!", vbInformation, "ERROR"
    Exit Sub
    End If
   
    If IsNumeric(kol) Then
        MsgBox "You entered number, please enter column symbol!", vbInformation, "ERROR"
    Exit Sub
    End If

    If ost < 5 Then Exit Sub
   
'for empty cells

        Range(Cells(6, kol), Cells(ost, kol)).Interior.Color = xlNone
        Range(Cells(6, kol), Cells(ost, kol)).SpecialCells(xlCellTypeBlanks).Select

            With Selection.Interior
             .Color = rgbYellow
            End With
   

'for duplicated cells
 
        With Range(Cells(6, kol), Cells(ost, kol))
        .FormatConditions.AddUniqueValues
        .FormatConditions(.FormatConditions.Count).SetFirstPriority
        .FormatConditions(1).DupeUnique = xlDuplicate
             
             With .FormatConditions(1).Interior
             .Color = rgbRed
             End With
             
        .FormatConditions(1).StopIfTrue = False
   
    End With
    Range("A1").Select
   
   
'finding string sales

        Range(Cells(6, kol), Cells(ost, kol)).Select
       
    Selection.FormatConditions.Add Type:=xlTextString, String:="sales", _
        TextOperator:=xlContains
       
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority

    With Selection.FormatConditions(1).Interior
        .Color = rgbDarkGreen
       
    End With
   
    Selection.FormatConditions(1).StopIfTrue = False


'finding string <

        Range(Cells(6, kol), Cells(ost, kol)).Select
       
    Selection.FormatConditions.Add Type:=xlTextString, String:="<", _
        TextOperator:=xlContains
       
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority

    With Selection.FormatConditions(1).Interior
        .Color = rgbMediumPurple
       
    End With
   
    Selection.FormatConditions(1).StopIfTrue = False
   
   
End Sub



przykladowy (1).xlsm
Pobierz Plik ściągnięto 17 raz(y) 21.79 KB

ID posta: 364665 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe