Помогите, пожалуйста, с такой задачей. Мне нужно чтобы цвет ячейки менялся если сумма в другой ячейке меньше. Как это сделать применительно к одной ячейке понимаю, но таблица из 1000+ строк и для каждой ячейки прописывать формулу уловного форматирования не айс. Т.е. у меня задача, что в столбце "А" есть в каждой ячейке с 1-й по 100-ю значение, и нужно чтобы ячейки в столбце "С" меняли свой цвет если, например, значение в соответствующей ячейки столбца "С" больше соответствующей ячейки столбца "А", т.е. сравнивается А1 с С1, А2 с С2 и так до тысячной ячейки. Есть ли вариант без макроса реализовать эту задачу с помощью условного форматирования? Приложил файл для наглядности, т.е. ячейки С1,С2 и С8 должны поменять свой цвет. Спасибо!
Знаю как сделать взаимозависимые раскрывающиеся списки, а вот как сделать что, например, при значении в ячейке равно 1, то будет раскрывающий список в столбце правее, а при значении ячейки равное 2, то списка раскрывающегося нет и можно писать с клавиатуры любое значение.
Нашел на форуме макрос который выводит сообщение при изменении ячейки на этом же листе, а нужно чтобы вводя данные на Листе2 будет меняться ячейка на Листе1 и при определенном значении ячеки на листе 1, например, ЛОЖЬ, должно всплыть окно с сообщением.
То что нашел на форуме:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
If Target = 1 Then
MsgBox "Здесь вызываем Ваш макрос"
End If
End If
End Sub
Для наглядности вложил файл. на Листе1 формула ссылающаяся на ячейку на Листе2.
Nordheim, переспал с мыслью, и пытался Ваш код переделать, чтобы не заполнялся столбец с порядковым номером, чтобы потом дописать формулу типа такой (=ЕСЛИ(ЕПУСТО(D37);"";СЧЁТЗ($D$4:D37))), но, к сожалению, переделать код не получилось
Nordheim, работает Ну и совсем уже наглость. Что нужно поменять в коде, чтобы беря информацию с Листа№1.2. нумерация продолжилась с того числа в столбце № п/п на котором закончился при заполнении с Листа№1
Nordheim, спасибо! Попробую внести изменения в код. Сообщение 52 - откорректировал, спасибо, за подсказку по знаку PS Я правильно понял, что закомментировать - означает через апостроф как бы сделать строку кода комментарием?
Nordheim, ответ прост - D на X заменил, а эту строку не вразумел(( Спасибо, теперь работает как надо:)
Для формирования отчета по договорам с Листа№1.2. ничего лучше не придумал как изменть в этой строке :"Range("a2")" на другую ячейку:) и потом копипастом добавить в отчет сформированный с Листа№1 Скорей всего можно сделать циклом проверки на пустое значение каждую строчку после заполнения формы Лист№2 с Листа№1 и на первой пустой встретившейся строке начать заполнение данных с Лист№1.2., т.к. это уже больше двух, то остановился на варианте таблицы рядом и копипаст
Nordheim, я тут поэкспериментировала и решил разбить на два кода для каждого отчета отдельно. Для Листа№2 все норм работает, даты берет из D. а вот со второй формой не очень, даты должен брать из столбца X (поменял во второй части кода D на X). При каких то датах после запуска пишет ошибку Run-time error 1004, а при каких то датах работает но выбирает не все позиции для указанной даты, т.е. например 10 событий на дату, а он выдает всего 1 (((
Или Ваш исходный код един и такая его попытка разбить и изменить не приведет к результату?
Код
Private Sub OkBtn_Click()
Dim arr(2), lrow&, i&, j&, x&
x = 0
With Лист1
lrow = .Range("b" & .Rows.Count).End(xlUp).Row
For i = 0 To 2
arr(i) = .Range(.[a3], .Range("aa" & lrow)).Value
Next i
End With
With CreateObject("Scripting.Dictionary")
For i = 0 To Me.iListDate.ListCount - 1
If Me.iListDate.Selected(i) Then .Item(CStr(CStr(Me.iListDate.List(i)))) = 0
Next i
If .Count = 0 Then Exit Sub
For i = 1 To UBound(arr(0))
If .exists(CStr(arr(0)(i, 4))) Then
x = x + 1
arr(1)(x, 1) = x: arr(1)(x, 2) = arr(0)(i, 3)
arr(1)(x, 3) = arr(0)(i, 2): arr(1)(x, 4) = arr(0)(i, 6)
arr(1)(x, 5) = arr(0)(i, 8: arr(1)(x, 6) = arr(0)(i, 4)
arr(1)(x, 7) = arr(0)(i, 5): arr(1)(x, 8 = arr(0)(i, 25)
End If
Next i
End With
With Лист2
.UsedRange.Offset(1, 0).ClearContents
.Columns(2).NumberFormat = "@"
.Range("a2").Resize(x, 8 = arr(1)
End With Unload Me
End SubPrivate Sub UserForm_Initialize()
Dim arr(), lrow&
With Лист1
lrow = .Range("x" & .Rows.Count).End(xlUp).Row
arr = .Range(.[x3], .Range("x" & lrow)).Value
End With
With CreateObject("Scripting.Dictionary")
For lrow = 1 To UBound(arr)
.Item(CStr(arr(lrow, 1))) = 0
Next lrow
Me.iListDate.List = .keys
End With
End Sub
Вопрос по коду, если нужно будет, чтобы информация в Лист№2 попадала не только с Листа№1, можно продублировать часть кода указав вместо Листа№1, например, Лист№1.2. или макрос будет выполняться последовательно и заполнит информацию с Листа№1.2. поверх уже сформированной из Листа№1 тем самым стерев данные?
PS еще такой вопрос. Лист№2 и Лист№3 формируются по выбранным датам из столбца D. Можно как то разделить код, чтобы Лист№2 формировался из дат по столбцу D, а Лист№3 из столбца, например, W?
Nordheim,офигеть Спасибо!) А я и так и сяк колдовал с листами, местами менял, переименовывал и т.д., а они все равно заполнялись только те что должны были:)
Nordheim, спасибо! С кнопкой разберусь после выхов, а насчет наименования листов не понял, т.к. в коде лист 1, лист 2, а в файле называются "Отчет по договорам" и "Отчет по актам". или я не туда смотрю? Я наконец то догнал как Ваш iFilter со всеми внутрянками перенести в свой рабочий файл. ВСЕ! С кнопкой разобрался!)) Спасибо!
Остался вопрос с названиями листов Где в коде имена листов на которых формируются таблицы
Nordheim, а как мне эту красивую форму фильтра и саму кнопку выполнить произвести в своем файле? Не пойму как переносится фиолетовая кнопка "выполнить" Рабочий файл в нем еще 35 листов залинкованных на другие книги и переносить не хочется. И кнопку хочу сделать на листе с отчетами, а не исходной таблицы ЗЫ Допетрил как в пользовательских формах сделать аналогичный фильтр, но не пойму как сделать эту фиолетовую кнопку с подвязкой на активацию фильтра? и чтобы в этом фильтре был список дат из таблицы?
a.i.mershik, спасибо! Подскажите, что сделать если мне нужно будет поменять кол-во столбцов в результирующей отличное от исходной? Это вопрос скорее пока ради любопытства, т.к. буду пробовать обкатать код от Nordheim,
Nordheim, странно, теперь вроде работает раньше было, что если перед заполненным столбцом 10 есть пустой столбец то не подхватывало. Возможно сделал ложный вывод из-за съехавших столбцов. Спасибо буду тестить эту гениальную форму
Nordheim, спасибо! Я заполню по максимуму с приближенными вариантами и текстовым сопровождением и выложу. При первом заполнении, не заполняется если перед показателем другие столбцы пустые и немного съехали столбцы (подписант AA а берет из столбца Y). Дабы не тратить Ваше время, пытаясь мне помочь не имея полной картины. Как заполню файл выложу
Nordheim, спасибо, а я как раз подготовил файл с фактическими столбцами исходной таблицы и две результирующей таблицы (отчеты по договором и отчеты по актам). в том виде какие должны быть в жизни
Nordheim, да и еще наименование столбцов менялось автоматически, получается в столбце "контрагент" а данные по "№договору". Если я захочу из 30-ти столбцовой таблицы сделать 10-ти я смогу Ваш код скорректировать или нужно писать конкретный код под конкретную задачу и поменять по-легкому Ваш код ламерскому пользователю в макросах не получится?
Nordheim, исходная таблица состоит из 4-х столбцов (как в файле), а нужно чтобы в результирующую таблицу после проставления дат в фильтре попадали данные сначала из 3-его стоблца затем из 2-го.,т.е. в исходной таблице столбцы 1,2,3,4 в результирующей только 3 и 2