ChatGPT Case 2

Podany poniżej skrypt miał porównać zaplanowane do wykonania przelewy z rzeczywiście wykonanymi, pobranymi z bankowości internetowej. Celem miało być wykrycie ewentualnych pomyłek, duplikatów, przelewów zaplanowanych a nie wykonanych. Jego przygotowanie z moim nowym kumplem, ChatGPT zajęło mi ok. trzech godzin. Efekt – działa tak jakbym chciał minimalizując prawdopodobieństwo niewychwycenia kosztownych pomyłek. Samo ręczne sprawdzanie przelewów, która to czynność jest żmucna i powtarzalna zajmowało mi doi tej pory właśnie ok. 2-3 godzin (w trakcie których po kilka razy zasypiałem :)). Więc zysk jest więcej niż wymierny.

Oryginalne zapytanie: Potrzebny skrypt do wyszukiwania stringów w excel. Przeszukanie zakresu kolumna P do wiersza zawierającego string STOP w Arkusz1, porównanie kolumny T do wiersza ze słowem kluczowym STOP w Arkusz2. Podświetlenie niepustych komórek w Arkusz1 kolumna P, których wartości nie mają odpowiedników w zakresie kolumna T Arkusz2 i jeśli w odpowiednim wierszu Arkusz1 kolumna M nie znajduje się słowo kluczowe O do wiersza zawierającego string STOP w Arkusz2 . Ignoruj puste wartości komórek w Arkusz1 Kolumna P oraz ignoruj puste komórki w Arkusz 2 kolumna T

Oczywiście w trakcie szlifowania skryptu następowały modyfikacje tego zapytania. Starałem się nie pisać w stylu np. „ale zamiast kolumny T potrzebuję kolumnę P”, ale wprowadzać poprawki do oryginalnego zapytania i zadawać to samo pytanie „już poprawione” jeszcze raz. W przypadku prostych zadań tak jest to bardziej skuteczne.

Efekt:

Poniżej znajduje się skrypt VBA, który powinien sprostać Twoim wymaganiom:

Sub FindAndHighlight()

    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim rng1 As Range
    Dim rng2 As Range
    Dim cell1 As Range
    Dim cell2 As Range
    Dim flag As Boolean
    Dim stopRow1 As Integer
    Dim stopRow2 As Integer

    'Ustalamy arkusze
    Set ws1 = ThisWorkbook.Sheets("Arkusz1")
    Set ws2 = ThisWorkbook.Sheets("Arkusz2")

    'Znajdujemy wiersz ze słowem kluczowym STOP w Arkusz1 i Arkusz2
    For Each cell1 In ws1.Columns("P").Cells
        If cell1.Value = "STOP" Then
            stopRow1 = cell1.Row
            Exit For
        End If
    Next cell1

    For Each cell2 In ws2.Columns("T").Cells
        If cell2.Value = "STOP" Then
            stopRow2 = cell2.Row
            Exit For
        End If
    Next cell2

    'Ustalamy zakres
    Set rng1 = ws1.Range("P1:P" & stopRow1)
    Set rng2 = ws2.Range("T1:T" & stopRow2)

    'Porównujemy wartości
    For Each cell1 In rng1
        If cell1.Value <> "" And ws1.Range("M" & cell1.Row).Value <> "O" Then
            flag = False
            For Each cell2 In rng2
                If cell1.Value = cell2.Value Then
                    flag = True
                    Exit For
                End If
            Next cell2
            If flag = False Then
                cell1.Interior.Color = RGB(255, 255, 0) 'Podświetlenie na żółto
            End If
        End If
    Next cell1

    For Each cell2 In rng2
        If cell2.Value <> "" Then
            flag = False
            For Each cell1 In rng1
                If cell2.Value = cell1.Value Then
                    flag = True
                    Exit For
                End If
            Next cell1
            If flag = True Then
                ws2.Rows(cell2.Row).EntireRow.Interior.Color = RGB(255, 255, 0) 'Podświetlenie całego wiersza na żółto
            End If
        End If
    Next cell2

End Sub

Ten skrypt zaczyna od znalezienia wiersza, który zawiera słowo „STOP” w kolumnach „P” w Arkusz1 i „T” w Arkusz2. Następnie porównuje wartości w tych zakresach. Jeśli komórka w kolumnie „P” Arkusz1 nie ma odpowiednika w kolumnie „T” Arkusz2, i jeśli w odpowiednim wierszu Arkusz1 kolumna „M” nie zawiera słowa „O”, to taka komórka zostaje podświetlona na żółto. Podobnie, jeśli komórka w kolumnie „T” Arkusz2 ma odpowiednik w kolumnie „P” Arkusz1, to cały wiersz zawierający tę komórkę zostaje podświetlony na żółto.

Skontaktuj się z nami

Chcesz dowiedzieć się więcej? Zadzwoń lub wypełnij formularz kontaktowy.

+48 516 125 484