Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Как изменить формулу с функцией СУММЕСЛИ для учета регистра
 
Добрый день!

Знающие люди, подскажите пожалуйста, как правильно дополнить формулу, чтобы в ней различался регистр? Сейчас, если названия артикулов в таблице называются условно а1 и А1, то формула выдает некорректное значение.

Вот формула:
=ЕСЛИОШИБКА(СУММПРОИЗВ(СУММЕСЛИ(ДВССЫЛ({"sales25"}&"!A2:A1048576");L1313;ДВССЫЛ({"sales25"}&"!B2:B1048576"))); 0)

я так понимаю, что в нее где-то нужно добавить функцию СОВПАД, но как ее добавить, я не знаю, пробовал наугад - формула конечно выдает ошибку. В инете тоже ничего не нашел похожего. Если кто знает, помогите, пожалуйста.
Объединение 3-х однотипных макросов в один
 
Добрый день!

В книге есть несколько столбцов с картинками. Картинки в одном столбце (изображение продукции) не нужно трогать, а в 3-х других (это пиктограммы) - картинкам необходимо назначать размеры и выравнивать по вертикали.

В данный момент для этих целей используются 3 однотипных макроса (которые отличаются друг от друга только указанным номером столбца - 1,6,7), каждый из которых выравнивает по вертикали и назначает размеры картинкам в своем столбце. (это сделано чтобы избежать деформации пиктограмм по причине изменения высоты строк)

Поскольку макросы выравнивают картинки по очереди, сначала один макрос - в своем столбце, потом другой.. т.д. за цикл то на обработку таблицы из 1000 строк уходит больше 5 минут.

Подскажите пожалуйста, как объединить 3 макроса в один, чтобы выравнивались картинки только в столбцах с пиктограммами, возможно это ускорит обработку.

Ниже макросы:
Код
Sub Иконки()
      Dim Shp As Shape
      Dim Picture As Object
      Dim lRow As Long
For lRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Rows(lRow).EntireRow.Hidden = False Then
    Dim ra As Range: Set ra = Cells(lRow, 1)
    For Each Shp In ShapesInRange(ra)
        With Shp
         If .Type = msoPicture Then
.Top = .TopLeftCell.Top + (.TopLeftCell.Height - .Height) / 2
.LockAspectRatio = msoFalse
.Height = 18
.Width = 18
.Top = .TopLeftCell.Top + (.TopLeftCell.Height - .Height) / 2
End If
End With
    Next Shp
End If
Next lRow
    End Sub
Код
Sub Опции()
      Dim Shp As Shape
      Dim Picture As Object
      Dim lRow As Long
For lRow = 2 To Cells(Rows.Count, 7).End(xlUp).Row
If Rows(lRow).EntireRow.Hidden = False Then
    Dim ra As Range: Set ra = Cells(lRow, 7)
    For Each Shp In ShapesInRange(ra)
        With Shp
         If .Type = msoPicture Then
.Top = .TopLeftCell.Top + (.TopLeftCell.Height - .Height) / 2
.LockAspectRatio = msoFalse
.Height = 18
.Width = 18
.Top = .TopLeftCell.Top + (.TopLeftCell.Height - .Height) / 2
            End If
            End With
    Next Shp
End If
Next lRow
    End Sub
Код
Sub Размеры()
      Dim Shp As Shape
      Dim Picture As Object
      Dim lRow As Long
For lRow = 2 To Cells(Rows.Count, 6).End(xlUp).Row
If Rows(lRow).EntireRow.Hidden = False Then
    Dim ra As Range: Set ra = Cells(lRow, 6)
    For Each Shp In ShapesInRange(ra)
        With Shp
         If .Type = msoPicture Then
.Top = .TopLeftCell.Top + (.TopLeftCell.Height - .Height) / 2
.LockAspectRatio = msoFalse
.Height = 18
.Width = 18
.Top = .TopLeftCell.Top + (.TopLeftCell.Height - .Height) / 2
            End If
            End With
    Next Shp
End If
Next lRow
    End Sub
Изменено: vlad1211 - 10.05.2018 12:15:00
Заполнение ComboBox(а) значениями из нескольких столбцов одного листа
 
Добрый день!
Пытаюсь заставить ComboBox (Быстрые ссылки) без ошибок фильтровать таблицу, используя для этого отдельные макросы. Фильтрация происходит, НО!

1) при переключении кнопки краткий/полный просмотр (верх.левый угол таблицы)  вылезает ошибка - "ошибка 1004 "Метод AutoFilter" из класса Range завершен неверно"
2)  нельзя снять автофильтр (он все время во включенном положении)

В тестовом режиме к выпадающему списку прикручен только один макрос - самая нижняя строка - Новинки 2018

По идее пользователь должен выбрать из списка быструю ссылку - происходит фильтрация по значению из именованного списка "LINKS". После этого макрос, вызываемый выпадающим списком должен остановиться.

Сейчас такое ощущение, что он выполняется постоянно, что вызывает ошибку в работе других кнопок.

Выкладываю исходный файл. Надеюсь, что кто-нибудь подскажет, как исправить эту ошибку.
Запуск макросов из выпадающего списка выдает ошибку 1004., ошибка 1004 "Метод AutoFilter" из класса Range завершен неверно
 
Уважаемые коллеги, подскажите пожалуйста, как избавиться от ошибки 1004 "Метод AutoFilter" из класса Range завершен неверно.

На листе имеется выпадающий список с макросами. Каждый макрос в списке запускает автофильтр.

По идее, при выборе макроса из списка - он должен отработать и остановиться. Сейчас же - во-первых, выскакивает эта ошибка (не понимаю, почему? ведь это обычный автофильтр), во-вторых, невозможно снять автофильтр (тоже не понятно - почему?) Такое ощущение, что макрос с фильтром продолжает выполняться...

Помогите пожалуйста разобраться.

Файл с примером во вложении.
Не применять ShapesInRange, если строки с рисунками скрыты
 
Добрый день! На листе имеется колонка с картинками (у всех картинок в свойствах - перемещать и изменять объект вместе с ячейками). После включения автофильтра, функция ShapesInRange все равно применяется ко всем картинкам в колонке, как будто фильтр выключен. Подскажите пожалуйста новичку, как модифицировать этот код, чтобы функция ShapesInRange корректно работала с включенным или выключенным фильтром. К этой функции должен обращаться макрос, который выравнивает картинки по центру ячейки. Спасибо за внимание!
Код
Function ShapesInRange(ByRef ra As Range) As ShapeRange
    On Error Resume Next: Dim a(), i&, n&, Shps As Shapes
    Set Shps = ra.Worksheet.Shapes
    If Shps.Count = 0 Then Exit Function
    ReDim a(1 To Shps.Count)
 
    For i = 1 To Shps.Count
        With Shps.Item(i)
            If .Type = msoPicture Or .Type = msoLinkedPicture Then
                If Not Intersect(ra.Worksheet.Range(.TopLeftCell, .BottomRightCell), ra) Is Nothing Then
                    n = n + 1: a(n) = i
                End If
            End If
        End With
    Next
    If n Then ReDim Preserve a(1 To n): Set ShapesInRange = Shps.Range(a)
End Function
Страницы: 1
Наверх