Страница: 1 | 2 |
Вопрос: работа в екселе с ячейками
Добавлено: 13.05.08 16:22
Автор вопроса: noob
пожалуйста помогите с решением задачи
имеется столбец с ячейками разного цвета допустим всего 3 цвета
необходимо посчитать количество ячеек каждого цвета
можно ли посчитать только с помощью формулы или как написать код на VB?
Ответы
Всего ответов: 18
Номер ответа: 1
Автор ответа:
J. Smith
ICQ: ненавижу
Вопросов: 40
Ответов: 477
Web-сайт:
Профиль | | #1
Добавлено: 13.05.08 16:59
http://vbnet.ru/forum/show.aspx?id=165675
в ответ на твой вопрос я написал макрос, его можно скопировать и изменить под новую задачу. Ленивый ты человек однако
Незнаю чем поможет формула, а на ВБА у тебя уже есть пример для осмысления.
Номер ответа: 2
Автор ответа:
J. Smith
ICQ: ненавижу
Вопросов: 40
Ответов: 477
Web-сайт:
Профиль | | #2
Добавлено: 14.05.08 08:54
Разобрался?
Номер ответа: 3
Автор ответа:
noob
Вопросов: 5
Ответов: 25
Профиль | | #3
Добавлено: 14.05.08 22:06
я пока чайник только начинаю разбираться
как подсчитать эти ячейки
For a = 1 To 100
Íîìåð_Ëèñòà = 1
Íîìåð_ïðîâåðÿåìîé_ñòðîêè = a
With Sheets(Íîìåð_Ëèñòà.UsedRange
For Ñòîëáåö = .Column To .Columns.Count
If Cells(Íîìåð_ïðîâåðÿåìîé_ñòðîêè, Ñòîëáåö.Font.ColorIndex = 5 Then
'Else: Cells(Íîìåð_ïðîâåðÿåìîé_ñòðîêè, Ñòîëáåö.Font.ColorIndex = 3
End If
Next
End With
Next
End Sub
Номер ответа: 4
Автор ответа:
noob
Вопросов: 5
Ответов: 25
Профиль | | #4
Добавлено: 14.05.08 22:09
sorry
Sub Macro1()
 im Столбец As Integer,
Номер_проверяемой_строки As Integer, Номер_Листа As Integer
Номер_Листа = 1
Номер_проверяемой_строки = 1
With Sheets(Номер_Листа).UsedRange
For Столбец = .Column To .Columns.Count
if Cells(Номер_проверяемой_строки, Столбец).Font.ColorIndex = 5 then ???????????????
'Else: Cells(Номер_проверяемой_строки, Столбец).Font.ColorIndex = 3
End If
Next
End With
End Sub
Номер ответа: 5
Автор ответа:
noob
Вопросов: 5
Ответов: 25
Профиль | | #5
Добавлено: 14.05.08 22:11
даже код не получается скопировать и вставить
Номер ответа: 6
Автор ответа:
J. Smith
ICQ: ненавижу
Вопросов: 40
Ответов: 477
Web-сайт:
Профиль | | #6
Добавлено: 15.05.08 12:08
Я тоже не сразу въехал, тут есть красивая кнопочка "Код", получается так:
Sub Macro1()
Dim Лист As Integer, Cтрока As Integer, Столбец As Integer, Красных As Integer, Синих As Integer
Лист = 1
Столбец = 1
With Sheets(Лист).UsedRange
For Cтрока = .Row To .Rows.Count
If .Cells(Cтрока, Столбец).Font.ColorIndex = 5 Then Синих = Синих + vbNull
ElseIf .Cells(Строка, Столбец).Font.ColorIndex = 3 Then Красных = Красных +vbNull
End If
Next
End With
MsgBox "Синих " & Синих & vbCrLf & "Красных " & Красных
End Sub
Кстати если строк или столбцов ОЧЕНЬ много то
Dim Лист As Long, Cтрока As Long, Столбец As Long, Красных As Long, Синих As Long
Номер ответа: 7
Автор ответа:
J. Smith
ICQ: ненавижу
Вопросов: 40
Ответов: 477
Web-сайт:
Профиль | | #7
Добавлено: 15.05.08 12:14
Закосячил
With Sheets(Лист)
For Cтрока = .UsedRange.Row To .UsedRange.Rows.Count
If .Cells(Cтрока, Столбец).Font.ColorIndex = 5 Then
Синих = Синих + vbNull
ElseIf .Cells(Строка, Столбец).Font.ColorIndex = 3 Then
Красных = Красных +vbNull
End If
Номер ответа: 8
Автор ответа:
J. Smith
ICQ: ненавижу
Вопросов: 40
Ответов: 477
Web-сайт:
Профиль | | #8
Добавлено: 15.05.08 12:49
А так красивеe
Sub Macro1()
Dim Лист As Integer, Cтрока As Integer, Столбец As Integer
Dim Цвет As Integer,Красных As Integer, Синих As Integer
Лист = 1
Столбец = 1
With Sheets(Лист)
For Cтрока = .UsedRange.Row To .UsedRange.Rows.Count
Цвет = .Cells(Cтрока, Столбец).Font.ColorIndex
If Цвет = 5 Then
Синих = Синих + vbNull
ElseIf Цвет = 3 Then
Красных = Красных +vbNull
End If
Next
End With
MsgBox "Синих " & Синих & vbCrLf & "Красных " & Красных
End Sub
Номер ответа: 9
Автор ответа:
noob
Вопросов: 5
Ответов: 25
Профиль | | #9
Добавлено: 15.05.08 13:24
Добрый день что тут не так
сразу же спотыкается на
и второе : считает только первый раз а повторно выдает тоже значение и висит
Номер ответа: 10
Автор ответа:
J. Smith
ICQ: ненавижу
Вопросов: 40
Ответов: 477
Web-сайт:
Профиль | | #10
Добавлено: 15.05.08 13:40
1. Скопируй из моего 8-го ответа.
2. Внимательно прочитай всю 2-ю страницу.
3. Начал учить VBA качай http://rapidshare.de/files/11204069/VBA_for_dummers.rar.html
Номер ответа: 11
Автор ответа:
noob
Вопросов: 5
Ответов: 25
Профиль | | #11
Добавлено: 16.05.08 14:41
спс , разобрался
просто перепутал
.Font.ColorIndex
и Interior.Font.ColorIndex
Номер ответа: 12
Автор ответа:
noob
Вопросов: 5
Ответов: 25
Профиль | | #12
Добавлено: 16.05.08 14:42
спс , разобрался
просто перепутал
.Font.ColorIndex
и Interior.ColorIndex
Номер ответа: 13
Автор ответа:
noob
Вопросов: 5
Ответов: 25
Профиль | | #13
Добавлено: 16.05.08 15:58
у меня никак не получается написать условие чтобы эта процедура выпонялась для нескольких листов (названия листов не по умолчанию sheet1, sheet2 а другие) считает и значения неправильные получаются
Номер ответа: 14
Автор ответа:
J. Smith
ICQ: ненавижу
Вопросов: 40
Ответов: 477
Web-сайт:
Профиль | | #14
Добавлено: 16.05.08 16:25
Приведи код всей "этой процедуры", тогда и ответ будет конкретно по существу.
Перечисляя листы удобно указывать не название а порядковый номер листа, но тогда листы нельзя менять местами.
Sheets(1).Cells(y,x)
Sheets(2).Cells(y,x)
Чтобы в цикле перечислять листы не по порядковому номеру а по названию можно создать массив названий
Dim Лист(3) As String
Лист(0)="Свод"
Лист(1)="Исходные данные"
Лист(2)="Справочник1"
Лист(3)="Справочник2"
теперь листы в книге можно поменять местами сколько угодно, перечисление пойдет в заданной выше поочередности
Sheets(Лист(0)).Cells(y,x)
Sheets(Лист(1)).Cells(y,x)
Sheets(Лист(2)).Cells(y,x)
Sheets(Лист(3)).Cells(y,x)
Номер ответа: 15
Автор ответа:
noob
Вопросов: 5
Ответов: 25
Профиль | | #15
Добавлено: 16.05.08 17:03
посчтитать для каждого листа
цифры у меня большие получаються
Dim yelow, broun, green, blue As Integer
With Sheets("vrtgt"
For a = 7 To 150
If .Cells(a, 1).Interior.ColorIndex = 6 Then
yelow = yelow + vbNull
ElseIf .Cells(a, 1).Interior.ColorIndex = 40 Then
broun = broun + vbNull
ElseIf .Cells(a, 1).Interior.ColorIndex = 43 Then
green = green + vbNull
ElseIf .Cells(a, 1).Interior.ColorIndex = 42 Then
blue = blue + vbNull
End If
Next
End With
Range("c2" = "cert" & ", " & yelow
Range("c3" = "crtr" & ", " & broun
Range("d1" = "crrc" & ", " & green
Range("d3" = "xrgfre" & ", " & blue
End Sub