Formuła zliczająca Excel

Witam,

Szukam formuły która po ustawieniu formatowania warunkowego będzie informować o błędzie.

Opiszę to na przykładzie:

Mamy dane:

1; 3; 4; 5; 2; 7; 0; 0; 3; 4; 3; 0; 3; 4; 0;

Jeśli z rzędu jest więcej niż 6 danych większych od zera chce aby informował o błędzie.

Np.

1; 4; 5; 6; 4; 8; 6; 7; 0; 3; 6; 7; 0; 4; 7; 4;

Tutaj gdzie jest pogrubione powinien być błąd ponieważ jest więcej niż 6 danych większych od zera z rzędu.

Liczenie powinno być kasowane w momencie wystąpienia zera . Mam nadzieje że wiecie o co mi chodzi.

Np:

1; 4; 6; 2; 6; 3; 0; 2; 7; 3;7; 0; 4;7

Tutaj powinno być bez błędu.

Formatowaniem warunkowym tego nie zrobisz, najlepiej macro uruchamiane podczas zmian w arkuszu. Kwestia tego co chcesz przez to osiągnąć, oraz w jakiej postaci dane są zapisywane, excel działa na komórkach, ale wtedy musisz podać zakres dla tych danych (tzn gdzie one są etc). Najprościej dać for do 6 w while, a jeśli błąd to alert. Oczywiście można zastosować formatowanie. Jednak użytkownik musi mieć włączoną obsługę makr. A ty musisz zdefiniować ile tych komórek ma być / kiedy makro ma się skończyć.

Hej,

A te liczby będą ustawione pojedynczo w poszczególnych wierszach kolumny?

Pozdrawiam,

Dimatheus

Dane mają być w osobnych komórkach

Np.

Ma być ich 40 i w tych 40 są rozlokowane te dane:

Np.:

[3] [4] [5] [4,5] [3] [5] [9] [0] [5] [4] [4] [0] [3] [5] [7] [2] [6] [7] [2] [7]

I tutaj co jest pogrubione chciałbym aby excel wykrywał błąd, wystarczy aby zaznaczał te komórki. Wszędzie tam gdzie ciąg liczb większych od zera przekracza 6 danych z rzędu. Jeśli się wkradnie zero pomiędzy nimi jest OK.

Co do opisu użytkownika drobok to za bardzo nie wiem jak to “ugryźć” przy pomocy makr. Nigdy z nich nie korzystałem.

For, do while, kojarzy mi się z pętlami, więc nie rozumiem opisanego przez Ciebie sposobu.

Mógłbym prosić o jaśniejsze nakierowanie na rozwiązanie problemu?

Pozdrawiam.

Private Sub Worksheet_Change()

zm=0

for i=1 to 40

  tmp=cells(i,1)

  if(tmp=0)

    zm=0

  else zm = zm + 1

if(zm>=6)

  cells(i,1).Interior.Color = RGB(200,160,35)

next i

end sub

Coś takiego, nie testowałem, ale powinno cię to naprowadzić na właściwy trop.

Nie wiem, czy takie rozwiązanie Cię zadowoli, ale możesz użyć takiej procedury VBA (kod ten należy umieścić w dowolnym module arkusza).

Public Sub FormatData()

Dim data As Range

Dim result As String

Dim i, j, k, l, startRow, startColumn, counter As Integer


Set data = Application.InputBox("Zaznacz zakres: ", Type:=8)


result = "Nieprawidłowe dane wejściowe."

If (Not data Is Nothing) And (Not (data.Rows.Count > 1 And data.Columns.Count > 1)) Then

    counter = 0

    startRow = 1

    startColumn = 1

    For i = 1 To data.Rows.Count

        For j = 1 To data.Columns.Count

            Range(data.cells(i, j).AddressLocal).Font.Bold = False


            If data.cells(i, j).Value = 0 Then

                counter = 0

                If data.Rows.Count = 1 Then

                    startRow = i

                    startColumn = j + 1

                Else

                    startRow = i + 1

                    startColumn = j

                End If

            Else

                counter = counter + 1

                If counter = 6 Then

                    For k = startRow To i

                        For l = startColumn To j

                            Range(data.cells(k, l).AddressLocal).Font.Bold = True

                        Next l

                    Next k

                ElseIf counter > 6 Then

                    Range(data.cells(i, j).AddressLocal).Font.Bold = True

                End If

            End If

        Next j

    Next i


    result = "Dane zostały sformatowane."

End If


MsgBox (result)

End Sub

Jak to działa? Otóż w obrębie arkusza musisz sobie dodać przycisk, który po naciśnięciu uruchomi kod powyższej procedury. Zostaniesz poproszony o podanie zakresu komórek. Może to być poziomy lub pionowy zakres z dowolną ilością komórek. Po wybraniu zakresu i naciśnięciu przycisku OK błędne dane zostaną pogrubione. Zaraz wrzucę przykładowy arkusz, żebyś mógł zobaczyć jak to działa.

EDIT:

http://www.speedyshare.com/files/29287470/Formatowanie_komorek.xlsm

I jedna uwaga na koniec … następnym razem tematy związane z Excel-em umieszczaj w dziale Problemy z oprogramowaniem :slight_smile:

Bardzo Ci dziękuję za pomoc. Genialne! :wink:

Pierwszy raz mam do czynienia z makrami, jest jakaś strona na której można poczytać o podstawach i poleceniach? Czy to jest jakiś język programowania?

VBA to jest język programowania i przy jego użyciu tworzysz makra w MS Office. W zasadzie to na ten temat pisane są książki (możesz przeszukać księgarnie, bo być może znajdziesz jakąś ciekawą pozycję). Jeśli chodzi o źródła online, to w zakładkach firefox-a dodane mam 2 linki, które kiedyś czytałem (może Ci się przydadzą). Zaznaczam, że są to jednak tylko podstawy.

http://www.excelszkolenie.pl/Excel%202007/index.htm

http://dzono4.w.interia.pl/index.htm

Jakiś czas temu na blogu dobreprogramy użytkownik molexor robił taki mini tutorial odnośnie tego jak tworzy się makra. Nie wiem jakiej jakości jest ten tutorial, ale możesz sobie przejrzeć.