Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2017, 11:44   #1
Frai5
 
Регистрация: 03.01.2017
Сообщений: 7
Вопрос

ну вот, задача такая: надо закрасить количество ячеек в зависимости от написанных ранее чисел. Числа в столбец, ячейки должны окрашиваться в строку. Т.е., число 3 - закрасилось 3 ячейки в строке, 235 - 235 ячеек. Можно чтобы они были одного цвета, но, желательно с подписью(числом).

есть один готовый код, но он у меня даже не запускается


Код:
Private Sub ny(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A1:N20")) Is Nothing Then
        If IsNumeric(Target.Value) Then
            Range(Target, Target.Offset(, Target.Value - 1)).Interior.ColorIndex = Target.Value + 2
        End If
    End If
End Sub

Последний раз редактировалось Вадим Мошев; 06.01.2017 в 16:42.
Frai5 вне форума Ответить с цитированием
Старый 04.01.2017, 13:22   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Frai5 нарисуй в екселе что хочешь получить. По описанию непонятно
Цитата:
Числа в столбец, ячейки должны окрашиваться в строку.
как это в строку? или же в строке?

Цитата:
Можно чтобы они были одного цвета, но, желательно с подписью(числом).
чего?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 04.01.2017, 14:07   #3
Frai5
 
Регистрация: 03.01.2017
Сообщений: 7
По умолчанию



ну вот чтобы как-то так было.
дробные числа или округлять, или просто заливать последнюю ячейку цветом посветлее
Frai5 вне форума Ответить с цитированием
Старый 04.01.2017, 14:34   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
Sub fa()
 Dim r As Long
 r = 2
 Cells.ClearFormats
 Do While Application.Trim(Cells(r, 3)) <> ""
    Cells(r, 3).Resize(1, CInt(Cells(r, 3))).Interior.ColorIndex = 6
    If Int(Cells(r, 3)) <> Cells(r, 3) Then
        Cells(r, 3).Offset(0, CInt(Cells(r, 3))).Interior.ColorIndex = 8
    End If
    r = r + 1
 Loop
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 05.01.2017, 14:27   #5
Frai5
 
Регистрация: 03.01.2017
Сообщений: 7
По умолчанию

ого) супер! а можно еще как-то сделать, чтобы в каждой строке именно сами закрашенные ячейки были обведены границей?
Frai5 вне форума Ответить с цитированием
Старый 05.01.2017, 16:19   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Frai5 Посмотреть сообщение
чтобы в каждой строке именно сами закрашенные ячейки были обведены границей?
каждая ячейка или только внешняя граница? Запомните, все что хотите получить надо так формулировать что-бы не возникало вопросов, лучше все это делать как с скрином - нарисовал в екселе, "вот, хочу такое", и люди видят что именно хочется
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 06.01.2017, 09:53   #7
Frai5
 
Регистрация: 03.01.2017
Сообщений: 7
По умолчанию

1. вот такая граница, не на каждую ячеку, а на каждую строку.
2. еще одна проблемка - если все форматирую, а потом нажимаю "заливку" то заливает все новыми цветами (это тоже видно на скрине на второй "табличке"). Хотелось бы чтобы цвета не менялись! НО в итоге колонок будет больше 56, поэтому не подходит.
Код:
For i = 1 To 56  
Cells(i, 2).Interior.ColorIndex = i
https://drive.google.com/open?id=0Bz...3ZqcmJoblZYb3M

Последний раз редактировалось Frai5; 06.01.2017 в 09:58.
Frai5 вне форума Ответить с цитированием
Старый 06.01.2017, 11:17   #8
Frai5
 
Регистрация: 03.01.2017
Сообщений: 7
По умолчанию

и знаете, в предыдущем коде сейчас нашла ошибку.
Если число 2,3 - красит два квадрата +1, а вот если уже 5,9 - красит 6 квадратов +1, что неправильно
Frai5 вне форума Ответить с цитированием
Старый 06.01.2017, 16:36   #9
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Frai5 Посмотреть сообщение
Если число 2,3 - красит два квадрата +1, а вот если уже 5,9 - красит 6 квадратов +1, что неправильно
Код:
Sub fa()
 Dim r As Long
 r = 2
 Cells.ClearFormats
 Do While Application.Trim(Cells(r, 3)) <> ""
   Cells(r, 3).Resize(1, Int(Cells(r, 3))).Interior.ColorIndex = 6
    If Int(Cells(r, 3)) <> Cells(r, 3) Then
        Cells(r, 3).Offset(0, Int(Cells(r, 3))).Interior.ColorIndex = 8
        With Range(Cells(r, 3), Cells(r, 3).Offset(0, Int(Cells(r, 3))))
            .Borders.LineStyle = xlContinuous
            .Borders.Weight = xlThin
            .Borders(xlEdgeLeft).Weight = xlMedium
            .Borders(xlEdgeTop).Weight = xlMedium
            .Borders(xlEdgeBottom).Weight = xlMedium
            .Borders(xlEdgeRight).Weight = xlMedium
            .Borders(xlInsideVertical).LineStyle = xlNone
            .Borders(xlInsideHorizontal).LineStyle = xlNone
        End With
    Else
        With Cells(r, 3).Resize(1, Int(Cells(r, 3)))
            .Borders.LineStyle = xlContinuous
            .Borders.Weight = xlThin
            .Borders(xlEdgeLeft).Weight = xlMedium
            .Borders(xlEdgeTop).Weight = xlMedium
            .Borders(xlEdgeBottom).Weight = xlMedium
            .Borders(xlEdgeRight).Weight = xlMedium
            .Borders(xlInsideVertical).LineStyle = xlNone
            .Borders(xlInsideHorizontal).LineStyle = xlNone
        End With

    End If
    
    r = r + 1
 Loop
End Sub
Цитата:
Сообщение от Frai5 Посмотреть сообщение
2. еще одна проблемка - если все форматирую, а потом нажимаю "заливку" то заливает все новыми цветами (это тоже видно на скрине на второй "табличке"). Хотелось бы чтобы цвета не менялись! НО в итоге колонок будет больше 56, поэтому не подходит.
непонятно
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 09.01.2017, 11:39   #10
Frai5
 
Регистрация: 03.01.2017
Сообщений: 7
По умолчанию

проблема с дробными решилась))) а с цветами(лучше все-таки для восприятия заливать все разными цветами), посмотрите на скрин:

для примера я выбрала четвертую строку, подпись D4 - ту-18 - ячейки получились такого сиреневого цвета.
Я скопировала эту строку и перенесла ее на E25. Когда я отформатировала заполненные ячейки, а потом залила снова - цвет ячеек ту-18 поменялся - стал баклажановый. Ну а для второй таблички у меня никаких макросов, ничего.

Т.е. - проблема - если я форматирую первую таблицу, цвета в ней меняются, во второй же таблице не меняются.
Решение - 1) как-то присвоить строкам в первой таблице постоянные значения цвета
2) либо чтобы при измена цвета в первой таблице, автоматом менялись цвета во второй.
Frai5 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрашивание ячеек Vladya Microsoft Office Excel 4 11.11.2013 21:03
VBA Exel 2010. Сортировка таблицы и закрашивание ячеек mextako Помощь студентам 0 31.10.2012 02:27
макрос в excel (vba) закрашивание ячеек Alex_91 Помощь студентам 0 23.05.2012 00:05
JTable закрашивание ячеек X@OC Общие вопросы по Java, Java SE, Kotlin 2 08.02.2012 11:48
Закрашивание ячеек в DBGRID jimmi З Помощь студентам 2 05.05.2011 06:38