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

Страницы: 1
РАНГ по двум не связанным диапазонам
 
Подскажите решение. Нужно найти ранг С1 в диапазонах A1:A3 и C1, потом ранг D1 в A1:A3 и D1 и.т.д. Можно конечно размножить рейндж A1:A3, но придется это делать много тысяч раз )

Как написать процедуру, размер кода в которой превышает допустимый компилятором VBA
 
Имеется 1500+ строк в макросе, подскажите пожалуйста, как их можно объединить, так чтобы модуль не ругался на
Procedure too large. Я готов 3000 ячеек руками вписывать, лишь бы это поместилось в рамки модуля.

Код
If Not Intersect(Target, Range("A1:AB20")) Is Nothing Then

Range("ACE3").Value = Range("A2").Value
Range("ACF3").Value = Range("G10").Value
Range("ACG3").Value = Range("H3").Value
.
.
.
Range("BHZ3").Value = Range("Y8").Value
F2 + Enter в суперфильтре
 
Подскажите пожалуйста, как в этом коде суперфильтра, дополнительно реализовать F2+Enter измененной ячейки. Range("A2:BZS2") фильтра берет значения из Листа 2, ну и соответственно ничего не фильтрует при изменении значения какой-либо ячейки.

Код
Private Sub Worksheet_Change(ByVal Target As Range)
 
    Dim FilterCol As Integer
    Dim FilterRange As Range
    Dim CondtitionString As Variant
    Dim Condition1 As String, Condition2 As String
 
    If Intersect(Target, Range("A2:BZS2")) Is Nothing Then Exit Sub
 
    On Error Resume Next
    Application.ScreenUpdating = False
     
    Set FilterRange = Target.Parent.AutoFilter.Range
     
    For Each cell In Target.Cells
        FilterCol = cell.Column - FilterRange.Columns(1).Column + 1
         
        If IsEmpty(cell) Then
            Target.Parent.Range(FilterRange.Address).AutoFilter Field:=FilterCol
        Else
            If InStr(1, UCase(cell.Value), " ÈËÈ ") > 0 Then
                LogicOperator = xlOr
                ConditionArray = Split(UCase(cell.Value), " ÈËÈ ")
            Else
                If InStr(1, UCase(cell.Value), " È ") > 0 Then
                    LogicOperator = xlAnd
                    ConditionArray = Split(UCase(cell.Value), " È ")
                Else
                    ConditionArray = Array(cell.Text)
                End If
            End If
            If Left(ConditionArray(0), 1) = "<" Or Left(ConditionArray(0), 1) = ">" Then
                Condition1 = ConditionArray(0)
            Else
                Condition1 = "=" & ConditionArray(0)
            End If
            If UBound(ConditionArray) = 1 Then
                If Left(ConditionArray(1), 1) = "<" Or Left(ConditionArray(1), 1) = ">" Then
                    Condition2 = ConditionArray(1)
                Else
                    Condition2 = "=" & ConditionArray(1)
                End If
            End If
            If UBound(ConditionArray) = 0 Then
                Target.Parent.Range(FilterRange.Address).AutoFilter Field:=FilterCol, Criteria1:=Condition1
            Else
                Target.Parent.Range(FilterRange.Address).AutoFilter Field:=FilterCol, Criteria1:=Condition1, _
                    Operator:=LogicOperator, Criteria2:=Condition2
            End If
        End If
    Next cell
     
    Set FilterRange = Nothing
    Application.ScreenUpdating = True
End Sub
Добавление пустых строк по условию, отредактировать макрос
 
Есть макрос который добавляет строки перед определенным числом, помогите пожалуйста его изменить.
Нужно чтобы макрос добавлял строки по условию. Есть число 10, нужно чтобы макрос нашел во 2м столбце первое число больше 10 (при условии что перед этим числом нет числа 10) и перед ним вставил пустую строку. И прописать, при возможности, в этой пустой строке во 2м столбце число 10. Ну и если это возможно сделать цикл не только для числа 10, а и для 15, 20.

Код
Sub Add_Row()
    Dim sSubStr As String
    Dim lCol As Long
    Dim lLastRow As Long, li As Long
    Dim lMet As Long
    Dim arr
 
    sSubStr = "10" 'Число
    If sSubStr = "" Then lMet = 0 Else lMet = 1
    lCol = "2" 'Столбец
    If lCol = 0 Then Exit Sub
 
    lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
    arr = Cells(1, lCol).Resize(lLastRow).Value
    Application.ScreenUpdating = 0
    Dim rr As Range
    For li = 1 To lLastRow
        If -(InStr(arr(li, 1), sSubStr) > 0) = lMet Then
            If rr Is Nothing Then
                Set rr = Cells(li, 1)
            Else
                Set rr = Union(rr, Cells(li, 1))
            End If
        End If
    Next li
    If Not rr Is Nothing Then rr.EntireRow.Insert
    Application.ScreenUpdating = 1
End Sub
Изменено: ff48 - 01.09.2019 16:33:54
VBA - удаление определенных ячеек
 
Помогите пожалуйста с макросом, целый день пытаюсь что-то подобное найти.

Есть неизвестное число таблиц, каждая находятся внутри определенного диапазона, диапазоны нужно прописать в макросе. Например, в прикрепленном файле, 4 таблицы (B3:I52) (B55:I104) (J3:Q52) (J55:Q104).

1. Нужно удалить содержимое двух ячеек левее слова "Розовый", для наглядности выделил розовым.
2. Нужно удалить все ячейки под словом "Красный", но в пределах диапазона, в примере - это удалить (J18:Q52) для диапазона (J3:Q52) и (B101:I104) для диапазона (B3:I52).

Слова "Розовый" и "Красный" бывают только в 5 и 8 колонках в пределах своего диапазона. Цвета в примере носят только информативных характер )
Копировать-Вставить напротив пустой ячейки VBA
 
Помогите пожалуйста с макросом. Есть таблица A:H, высота ее всегда разная. Есть колонка А в которой есть пустые ячейки. Нужно напротив каждой пустой ячейки в колонке А, в туже строчку, вставить ячейки с K1 по DB1. Например если пустая ячейка А5, то ctrl+c K1:DB1 ctrl+v K5:DB5. И в саму пустую ячейку в колонке А5 вставить ячейку из K1.
ИНДЕКС+ПОИСКПОЗ или АГРЕГАТ: что меньше грузит комп?
 
Есть ли смысл перейти с  для вытягивания данных из других файлов? Ошибки не имеют значения. Интересует производительность.
Страницы: 1
Наверх