В текущей ячейке G1223 есть формула содержащая ссылку в некое место, если текст получаемый при вычислении ссылки не содержит отпределенное значение (*ФПС*), то формулу из этой ячейки нужно скопировать в соседний столбец (либо L, либо N) и изменить условие формулы (т.е. сместить ссылку на нужный столбец), для наглядности изменить цвет внесенных изменений и перейти к следующей строке в столбце первой текущей ячейки, т.е. G1224 и так далее до строки 11325.
Делать все ручками недопустимая роскошь... Не программировал уже лет 13... макросы пытаюсь писать на основе того, что моу сделать при записи макроса и потом его сам дополняю... потому, что проблемы с синтаксисом и знанием операторов...
Вот что сделал:
Код
Sub копирование_Названия_в_технику_1_ранг()
'
' для случая смещения техники в столбец L
' копирование формулы Названия в телефон и технику и замена на правильные столбцы в формулах
' Сочетание клавиш: Ctrl+й
'
Selection.Copy
ActiveCell.Range("f1").Select ' для случая смещения техники в столбец L
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.Replace What:="a", Replacement:="t", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
With Selection.Font
.Color = -65536
.TintAndShade = 0
End With
Application.CutCopyMode = False
End Sub
Sub копирование_Названия_в_технику_2_ранг()
'
' для случая смещения техники в столбец N
' копирование формулы Названия в телефон и технику и замена на правильные столбцы в формулах
' Сочетание клавиш: Ctrl+ц
'
Selection.Copy
ActiveCell.Range("h1").Select ' для случая смещения техники в столбец N
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.Replace What:="a", Replacement:="t", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
With Selection.Font
.Color = -65536
.TintAndShade = 0
End With
Application.CutCopyMode = False
End Sub
Смотреть "Глазками" нет ли в ячейке слов ФПС 10102 раза не вариант !!!
ВОПРОС: Как все это запустить в цикл с нужной ячейки Gi (у меня i=1223, k=11325 в примере i=8, k=22) и до Gk:
Скрытый текст
Код
начало цикла
ActiveCell.Range("G i").Select
при этом проверяем:
Если значение в ячейке G i содержит *ФПС* то следующая строка G i+1, т.е. шаг цикла
Если значение в ячейке H i <>"1" то следующая строка G i+1, т.е. шаг цикла
Если ячейка L i <> "" тогда применять 1-ый Sub иначе 2-ой Sub т.е. в зависимости от того где уже содержиться техника, которую меняем на ссылку (т.е. смещение на 5 или 7 столбцов).
меняем номер строки i=i+1, т.е. шаг цикла и повторяем процедуру... и так пока не достигнем i=k
К информации у меня Microsoft Excel 2010... но я не знаю как объявить переменные и как правильно использовать синтаксис в цикле...
Kaptorpaff, вот Вам пример прохождения цикла, но в итоге макрос вывалится в ошибку потому, что у Вас в кодах копирования используется Selection.Copy, ActiveCell.Range("f1").Select - а это вообще не понятно или активная или заданная. Разбираться не охота в том, что Вы хотите сделать.
Код
Sub cicle()
Dim i As Long
For i = 1223 To 11325
'пропуск строки с ФПС
If InStr(1, Cells(i, "G").Value, "ФПС") = 0 Then
'пропуск строки без ФПС и 1 в столбце Н
If Cells(i, 8).Value <> 1 Then
'проверка условий и запуск макроса в зависимости от значений в L
If Cells(i, 12).Value <> "" Then
Call копирование_Названия_в_технику_1_ранг
Else: Call копирование_Названия_в_технику_2_ранг
End If
End If
End If
Next i
End Sub