ChatGPT Case 1

Efekt końcowy zapytania: „Potrzebny skrypt do Excela. Skrypt przegląda w arkuszu Arkusz1 kolumnę C od wiersza zawierającego słoto START aż do słowa kluczowego STOP. W kolumnie są powtarzające się stringi. Po wykryciu stringu, który jest inny niż poprzedni, nie dotyczy to słów kluczowych START i STOP, skrypt wstawia powyżej pusty wiersz. Jednocześnie wylicza sumę wartości komórek G we w ten sposób powstałym bloku , charakteryzującym się tymi samymi wartościami w kolumnie C i wpisuje tę wartość w ostatnim wierszu danego bloku w kolumnie N”

Osiągnięcie tego efektu zajęło mi ok. trzech godzin oraz ok. 12 iteracji z ChatGPT, doprecyzowania pytania, korekty błędów, pytań pomocniczych itd. Przyznam, że wrażenia z interakcji z tym narzędziem są jedyne w swoim rodzaju. Powiedziałbym, że współpracuje się lepiej n iż z człowiekiem.

  • To co się mu pisze, rozumie dosłownie
  • Nie zadaje głupich pytań
  • Nie denerwuje się, że zmieniam zdanie lub proszę kolejny raz o to samo
  • Nie pyta „a po co ci to”
  • Ogólnie „oaza cierpliwości” 🙂

Kod:

Sub CreateBlocksAndCalculateSums()
Dim rng As Range
Dim i As Long
Dim sumStart As Long
Dim sumG As Double, sumH As Double
Dim startRow As Long
Dim endRow As Long
Dim lastVal As Variant

' Znajdź początek i koniec zakresu
startRow = Application.Match("START", ThisWorkbook.Sheets("Arkusz1").Range("D:D"), 0) + 1
endRow = Application.Match("STOP", ThisWorkbook.Sheets("Arkusz1").Range("D:D"), 0) - 1

' Ustaw zakres od START do STOP w kolumnie C do przeglądania
Set rng = ThisWorkbook.Sheets("Arkusz1").Range("C" & startRow & ":C" & endRow)

' Ustal początek sumy
sumStart = startRow

' Przechowaj ostatnią przetworzoną wartość
lastVal = rng.Cells(1, 1).Value

' Przeszukaj zakres od góry do dołu
i = 2
While i <= rng.Rows.Count
    ' Jeżeli napotkasz inny string, wstaw pusty wiersz
    If rng.Cells(i, 1).Value <> lastVal Then
        ' Oblicz sumę wartości z kolumny G i dodaj do ostatniego wiersza bloku w kolumnie N
        sumG = Application.WorksheetFunction.Sum(Range("G" & sumStart & ":G" & startRow + i - 2))
        Cells(startRow + i - 2, "N").Value = sumG
        ' Oblicz sumę wartości z kolumny H i dodaj do ostatniego wiersza bloku w kolumnie O
        sumH = Application.WorksheetFunction.Sum(Range("H" & sumStart & ":H" & startRow + i - 2))
        Cells(startRow + i - 2, "O").Value = sumH
        ' Zresetuj sumStart do aktualnego wiersza
        sumStart = startRow + i
        rng.Rows(i).EntireRow.Insert
        ' Odśwież zakres po wstawieniu pustego wiersza
        Set rng = ThisWorkbook.Sheets("Arkusz1").Range("C" & startRow & ":C" & endRow + i)
        ' Zaktualizuj ostatnią wartość
        lastVal = rng.Cells(i + 1, 1).Value
    End If
    i = i + 1
Wend

' Oblicz sumę dla ostatniego bloku po wykonaniu pętli
sumG = Application.WorksheetFunction.Sum(Range("G" & sumStart & ":G" & startRow + rng.Rows.Count - 1))
Cells(startRow + rng.Rows.Count - 1, "N").Value = sumG
sumH = Application.WorksheetFunction.Sum(Range("H" & sumStart & ":H" & startRow + rng.Rows.Count - 1))
Cells(startRow + rng.Rows.Count - 1, "O").Value = sumH

End Sub

Skontaktuj się z nami

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

+48 516 125 484