Страницы: 1
RSS
Макрос в котором меняется формат если значение ячейки больше 0, Как поменять формат только у ячеек, которые подтягивают не 0
 
Если меняю формат макросом на дату, 0 отражается как
00.01.1900,
а если ставлю условное форматирование выдает ошибку, подскжаите как решить? прикладываю и базу откуда подтягиваетсяя и файл-пример  
 
АЛина Алина,  что решить? все работает как и должно работать...
Не бойтесь совершенства. Вам его не достичь.
 
Непонятно, что именно нужно решить?
Если речь об отображении даты, что, мол, когда дата отлична от 0, то отображать в формате даты, а если там 0, то ничего не отображать, то можно так:
1. выделить ячейку с датой
2. ПКМ, формат ячейки, все форматы
3. задать формат:
Код
ДД.ММ.ГГГГ;;;

4. Если надо, распространить этот формат на другие ячейки с датами.
Кому решение нужно - тот пример и рисует.
 
Смотрите, когда данные дата от и дата до существуют они подтягиваются просто в числовом формате, если я меняю в макросе6 (просто меняю весь столбец на формат даты, то 0 отображается как дата тоже, а нужен просто 0 -то есть то, где нет даты от и даты до должен быть числовой формат, а там где есть дата, там формат даты.) А если пытаюсь в макросе прописать условное форматирование в котором меняется формат даты если ячейка больше 0, у меня выдает ошибку почему-то , не могу понять как сделать чтобы работало
 
Цитата
написал:
Непонятно, что именно нужно решить?
Если речь об отображении даты, что, мол, когда дата отлична от 0, то отображать в формате даты, а если там 0, то ничего не отображать, то можно так:
1. выделить ячейку с датой
2. ПКМ, формат ячейки, все форматы
3. задать формат:
Код
    [URL=#]?[/URL]       1      ДД.ММ.ГГГГ;;;   
 
4. Если надо, распространить этот формат на другие ячейки с датами.
Вы супер!! Все получилось
 
АЛина Алина,  просто бы вставляли значения, для чего использовать макрос и вставлять формулы ...
Код
Sub Макрос4()
Dim sh As Worksheet, sh2 As Worksheet, i As Long, j As Long, lr As Long, lr2 As Long
Set sh = ActiveSheet
Set sh2 = Worksheets("База")
lr = sh.Cells(Rows.Count, 1).End(xlUp).Row
lr2 = sh2.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lr
    t1 = sh.Cells(i, 1): t2 = sh.Cells(i, 2)
    For j = 2 To lr2
        t3 = sh2.Cells(j, 1): t4 = sh2.Cells(j, 2)
        If t1 = t3 And t2 = t4 Then
        sh2.Cells(j, 3).Resize(1, 10).Copy
        sh.Cells(i, 3).PasteSpecial Paste:=xlPasteValues
        Exit For
        End If
    Next j
Next i
End Sub
Не бойтесь совершенства. Вам его не достичь.
 
Алина, позволю себе заметить, что у вас в файле  совпадения ищутся целиком по столбцу, что очень долго. У вас рабочий диапазон именован как  Таблица1. Имеет  смысл так к нему и обращаться.Замените формулу на

=ПРОСМОТР(2;1/(ИНДЕКС(Таблица1;;1)&ИНДЕКС(Таблица1;;2)=$A2&$B2);ИНДЕКС(Таблица1;;СТОЛБЕЦ()))

Макрос для заполнения особо нужен - можно копировать формулу сразу во все ячейки, она одинаковая для всех. И  ввод формулы массива здесь не нужен. Единственно, в отличии от вашей формулы "просмотр" найдет последнее совпадение, а не первое.
Если имя таблицы может меняться - ну, можно и без именованного диапазона, только формула громоздкая будет, чтобы по строкам ограничить - ищет в первом столбце последний код и по нему считает конец данных:

=ПРОСМОТР(2;1/(ИНДЕКС(База!$A$1:ИНДЕКС(База!$A:$A;ПОИСКПОЗ(1E+306;База!$A:$A;1));)&ИНДЕКС(База!$B$1:ИНДЕКС(База!$B:$B;ПОИСКПОЗ(1E+306;База!$A:$A;1));)=$A2&$B2);ИНДЕКС(База!$A:$L;;СТОЛБЕЦ()))

А  код разве не уникальный? Зачем 2 условия?
Страницы: 1
Наверх