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

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

Как написать процедуру, размер кода в которой превышает допустимый компилятором VBA
 
Ігор Гончаренко, Код ниже великолепно работает, прописать 1597 ячеек проще, чем 3000. Благодарю )
Код
dim adr, c&
adr = array("A2", "G10", "H3" ... "Y8") ' тут не вижу закономерности в указанных адресах, поэтому... простым перечислением имен ячеек
...
for c = 0 to ubound(adr)
  cells(3,1+c) = range(adr(c))
next
Как написать процедуру, размер кода в которой превышает допустимый компилятором VBA
 
Ігор Гончаренко, Спасибо, попробовал ваш первый вариант, работает. По поводу закономерностей, точный рейндж идет от A3 до BIK3. А второй рейндж, в разнобой, там закономерности никакой вообще.
Как написать процедуру, размер кода в которой превышает допустимый компилятором 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
Добавление пустых строк по условию, отредактировать макрос
 
casag,
Разобрался, спасибо еще раз, мир не без добрых людей )
Добавление пустых строк по условию, отредактировать макрос
 
Цитата
Андрей VG написал: Если в строке пять нет 10, то выполняется вставка строки и запись 10
Все верно. А если есть число 10, тогда идем дальше.
Изменено: ff48 - 01.09.2019 22:12:43
Добавление пустых строк по условию, отредактировать макрос
 
Есть макрос который добавляет строки перед определенным числом, помогите пожалуйста его изменить.
Нужно чтобы макрос добавлял строки по условию. Есть число 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
Массовый поиск и замена текста во всей книге, поиск и замена определенного диапазона значений в одной колонке значениями другой колонки
 
Цитата
Ігор Гончаренко написал:
не заваливайте хламом чужие темы

Вот в каждом сообщении нужно насрать немного: лабуды, глаза, хлам. Будьте добрее.
Массовый поиск и замена текста во всей книге, поиск и замена определенного диапазона значений в одной колонке значениями другой колонки
 
Цитата
Ігор Гончаренко написал:
у меня Excel 2035 и его достаточно для всего. что мне нужно.

Да я понял, когда будет и у меня 2035 Excel, тогда тоже смогу переименовывать листы через Ctrl+H.

А вообще извиняюсь что поднял из архива эту тему, не все люди последние комментарии читают, нужно новую было создать.
Массовый поиск и замена текста во всей книге, поиск и замена определенного диапазона значений в одной колонке значениями другой колонки
 
Цитата
Ігор Гончаренко написал:
без макросов и всей непонятной Вам лабуды жметеCtrl+Hпишете что заменитиь на что, выбираете на листе/в книге жмеье заменить все

У вас видимо 2020 excel раз через Ctrl+H листы переименовать можно.
Массовый поиск и замена текста во всей книге, поиск и замена определенного диапазона значений в одной колонке значениями другой колонки
 
Код
Sub ReplacePart()
Dim a, shReplace As Worksheet, sh, i As Long, j As Long, r As Long, oldPart, newPart
Set shReplace = Sheets("Замена")
r = 2
Do
  oldPart = shReplace.Cells(r, 1)
  newPart = shReplace.Cells(r, 2)
  For Each sh In Worksheets
    If sh.Name <> shReplace.Name Then
      With sh
        .Cells.Replace What:=oldPart, Replacement:=newPart, _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
        SearchFormat:=False, ReplaceFormat:=False
      End With
    End If
  Next
  r = r + 1
Loop Until shReplace.Cells(r, 1) = ""
End Sub


А можете немного переделать этот макрос для переименования листов в книге ?
VBA - удаление определенных ячеек
 
Sanja, То что нужно, спасибо огромное.
VBA - удаление определенных ячеек
 
Цитата
vikttur написал:
Как теперь тему обзовем (ближе к теме)?
Ну вроде все вопросы в рамках темы и правил, извините если что-то не так.

Мои знания около нулевые, но удалось понять, что в этом коде нужно указать первую колонку диапазона.
Код
iRed.Offset(1, "Первая колонка" ).Resize(.Rows.Count - iRed.Row + .Row - 1, .Columns.Count).ClearContents

Подскажите пожалуйста, что нужно вместо "Первая колонка" вставить.
Изменено: ff48 - 17.08.2019 17:30:11
VBA - удаление определенных ячеек
 
Sanja, Спасибо, единственное, удалять нужно не только в колонке под "Красный", а во всех 8 колонках диапазона, т.е. очистить все от "Красный + 1" до конца рейнджа. Пытался менять эту часть, ничего не вышло."

Код
Do
        iRed.Offset(1).Resize(.Rows.Count - iRed.Row + .Row - 1).ClearContents
Изменено: ff48 - 17.08.2019 14:57:00
VBA - удаление определенных ячеек
 
Погуглив удалось собрать почти то что нужно. С "Розовый" проблем нет, а вот с "Красным" есть. Например в перезалитом примере, 2 таблицы, A3:H24 и A26:H47. Если во 2й таблице A26:H47 нет слова "Красный", то все работает ок, если есть то макрос удаляет нужную часть 1й и полностью 2ю таблицу . Как сказать макросу чтобы он не лез во 2ю таблицу ?

И подскажите что написать вместо With Sheets("Test 1") чтобы этот макрос применялся ко всей книге в целом, если это возможно.
Код
Sub Delete_Red()
'
Dim i&
Dim n As Boolean
n = False
With Sheets("Test 1")
    For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
' From A3 to H24
        If .Cells(i, 5) = "Розовый" Then
            With .Range(.Cells(i, 3), .Cells(i, 4))
                .ClearContents
            End With
        End If
        If .Cells(i, 8) = "Розовый" Then
            With .Range(.Cells(i, 6), .Cells(i, 7))
                .ClearContents
            End With
        End If
        If .Cells(i, 5) = "Красный" Or .Cells(i, 8) = "Красный" Then
            With .Range(.Cells(i + 1, 1), Cells(24, 8))
                .ClearContents
            End With
        End If
        
 ' From A26 to H47
 
        If .Cells(i, 5) = "Розовый" Then
            With .Range(.Cells(i, 3), .Cells(i, 4))
                .ClearContents
            End With
        End If
        If .Cells(i, 8) = "Розовый" Then
            With .Range(.Cells(i, 6), .Cells(i, 7))
                .ClearContents
            End With
        End If
        If .Cells(i, 5) = "Красный" Or .Cells(i, 8) = "Красный" Then
            With .Range(.Cells(i + 1, 1), Cells(47, 8))
                .ClearContents
            End With
        End If
    Next i
End With
End Sub
VBA - удаление определенных ячеек
 
Дело в том что "Розовый" и "Красный" пересекаются не часто. Иногда их вообще в таблице нет. И как я понимаю работу скрипта, в случае если "Розовый" находится ниже "Красного". Сначала скрипт удаляет 2 ячейки слева от "Розовый", потом удаляет все что ниже "Красный", и если там оказался "Розовый", то и его удаляет.
VBA - удаление определенных ячеек
 
Это не важно, у красного приоритет )
VBA - удаление определенных ячеек
 
Тогда пожалуйста подскажите, как сделать поиск и последующее удаление внутри определенного диапазона средствами VBA ?
VBA - удаление определенных ячеек
 
Помогите пожалуйста с макросом, целый день пытаюсь что-то подобное найти.

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

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

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