pechkin, Если и возможно, то максимальное или как? Это однозначно VBA , не сложный, но VBA. Вы уже и кнопку навесли :-) Только для того чтоб определеить потребуется смотреть на формат, а там может быть очень большое разнообразие и анализ сложным может оказаться.
Pelena, из примера видно, что про формат.
pechkin, Если и возможно, то максимальное или как? Это однозначно VBA , не сложный, но VBA. Вы уже и кнопку навесли :-) Только для того чтоб определеить потребуется смотреть на формат, а там может быть очень большое разнообразие и анализ сложным может оказаться.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Из примера-то видно, а что там на самом деле... На примере, скажем, такой макрос работает [vba]
Код
Sub Кнопка1_Щелчок() Dim cl As Range ActiveSheet.UsedRange.Cells.Interior.Color = xlNone With ActiveSheet For Each cl In .UsedRange If cl <> "" And cl.NumberFormat = "0" & IIf(.Range("J1").Value, "." & Application.Rept("0",.Range("J1").Value), "") Then cl.Interior.Color = vbRed Next End With End Sub
[/vba]
Из примера-то видно, а что там на самом деле... На примере, скажем, такой макрос работает [vba]
Код
Sub Кнопка1_Щелчок() Dim cl As Range ActiveSheet.UsedRange.Cells.Interior.Color = xlNone With ActiveSheet For Each cl In .UsedRange If cl <> "" And cl.NumberFormat = "0" & IIf(.Range("J1").Value, "." & Application.Rept("0",.Range("J1").Value), "") Then cl.Interior.Color = vbRed Next End With End Sub
Sub GetMod() Dim dig As Integer Dim dig1 As Integer For Each cell In ActiveSheet.Range("a1:f24") dig1 = Len(cell.NumberFormat) - InStr(1, cell.NumberFormat, ".") If dig1 > dig Then dig = dig1 Next cell [j1] = dig End Sub
[/vba]
я еще вот это б добавил For Each cell In Union(.SpecialCells(xlCellTypeConstants), .SpecialCells(xlCellTypeFormulas)) для usedrange
ну да . или [vba]
Код
Sub GetMod() Dim dig As Integer Dim dig1 As Integer For Each cell In ActiveSheet.Range("a1:f24") dig1 = Len(cell.NumberFormat) - InStr(1, cell.NumberFormat, ".") If dig1 > dig Then dig = dig1 Next cell [j1] = dig End Sub
[/vba]
я еще вот это б добавил For Each cell In Union(.SpecialCells(xlCellTypeConstants), .SpecialCells(xlCellTypeFormulas)) для usedrangebmv98rus
Замечательный Временно просто медведь , процентов на 20.
Sub red() Application.ScreenUpdating = False ActiveSheet.Cells.Interior.Color = xlNone For i = 1 To 100 For j = 1 To 100 If Len(Cells(i, j)) - InStr(1, Cells(i, j), ",") = Range("j1") Then Cells(i, j).Interior.Color = 255 End If Next j Next i Application.ScreenUpdating = True End Sub
[/vba]
пока писал, уже ответили)) [vba]
Код
Sub red() Application.ScreenUpdating = False ActiveSheet.Cells.Interior.Color = xlNone For i = 1 To 100 For j = 1 To 100 If Len(Cells(i, j)) - InStr(1, Cells(i, j), ",") = Range("j1") Then Cells(i, j).Interior.Color = 255 End If Next j Next i Application.ScreenUpdating = True End Sub
Здравствуйте! Всем спасибо за участие. Прошу прощения, что не совсем полно уточнил задачу. В ячейках листа находятся числа с разным количеством десятичных знаков, отображаются они в ячейках по разному (в зависимости от форматирования) Необходимо найти и выделить ячейки с числами (ячейки с текстом должны игнорироваться) у которых заданное количество десятичных знаков. Более всего подходит макрос от fan-vba, но если в ячейку вводится целое число и его разрядность совпадает с заданным количеством десятичных знаков, то макрос его тоже выделяет. Спасибо!
Здравствуйте! Всем спасибо за участие. Прошу прощения, что не совсем полно уточнил задачу. В ячейках листа находятся числа с разным количеством десятичных знаков, отображаются они в ячейках по разному (в зависимости от форматирования) Необходимо найти и выделить ячейки с числами (ячейки с текстом должны игнорироваться) у которых заданное количество десятичных знаков. Более всего подходит макрос от fan-vba, но если в ячейку вводится целое число и его разрядность совпадает с заданным количеством десятичных знаков, то макрос его тоже выделяет. Спасибо!pechkin
Dim lngChislo As Long Dim arr(), var, lr As Long, i As Long, j As Long
Application.ScreenUpdating = False
lngChislo = Range("J1").Value Columns("A:F").Interior.ColorIndex = xlColorIndexNone lr = Columns("A:F").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr() = Range("A1:F" & lr).Value For i = 1 To UBound(arr) For j = 1 To UBound(arr, 2)
If IsError(arr(i, j)) Then GoTo metka End If If arr(i, j) = "" Then GoTo metka End If If IsNumeric(arr(i, j)) = False Then GoTo metka End If
var = Split(arr(i, j), ",") If UBound(var) > 0 Then If Len(var(1)) = lngChislo Then Cells(i, j).Interior.Color = vbRed End If End If metka: Next j Next i
Application.ScreenUpdating = True
End Sub
[/vba]
[vba]
Код
Sub Закрасить_по_дробной_части()
Dim lngChislo As Long Dim arr(), var, lr As Long, i As Long, j As Long
Application.ScreenUpdating = False
lngChislo = Range("J1").Value Columns("A:F").Interior.ColorIndex = xlColorIndexNone lr = Columns("A:F").Find(What:="*", LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _ , SearchFormat:=False).Row arr() = Range("A1:F" & lr).Value For i = 1 To UBound(arr) For j = 1 To UBound(arr, 2)
If IsError(arr(i, j)) Then GoTo metka End If If arr(i, j) = "" Then GoTo metka End If If IsNumeric(arr(i, j)) = False Then GoTo metka End If
var = Split(arr(i, j), ",") If UBound(var) > 0 Then If Len(var(1)) = lngChislo Then Cells(i, j).Interior.Color = vbRed End If End If metka: Next j Next i