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ć.
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?
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.
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.
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ć.