Применить формулу, сместить три столбца от выбранных ячеек - PullRequest
0 голосов
/ 26 октября 2018

Я создал код VBA, чтобы применить формулу, которая должна делать следующее: когда пользователь выбирает диапазон ячеек, к формуле применяются 3 столбца справа от данных выбора. Например, если пользователь выбирает диапазон G8: G18, когда пользователь выполняет макрос, формула должна применяться к диапазону J8: J18 из данных диапазона G8: G18

Однако формула находится в диапазоне G8 вместо применения в диапазоне J8: J18.

enter image description here

Sub ghjkk()
Dim c As Range
Dim rng As Range
Set rng = Selection.Offset(0, 3)
For Each c In rng
ActiveCell.FormulaR1C1 = _
        "=IF(RC[-3]=0.2,""Y5"",IF(RC[-3]=0.1,""Y6"",IF(RC[-3]=0,""V0"",IF(RC[-3]=0.021,""Y3"",IF(RC[-3]=0.055,""Y4"",FALSE)))))"
Next c
End Sub

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

При необходимости измените имя листа и диапазон и импортируйте приведенный ниже код в событие Worksheet_Change на конкретном листе.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

   If Not Intersect(Target, Range("G8:G18")) Is Nothing Then

       Application.EnableEvents = False

            If Cells(Target.Row, 4).Value = "0.2" Then
                Cells(Target.Row, 10).Value = "Y5"
            ElseIf Cells(Target.Row, 4).Value = "0.1" Then
                Cells(Target.Row, 10).Value = "Y6"
            ElseIf Cells(Target.Row, 4).Value = "0" Then
                Cells(Target.Row, 10).Value = "V0"
            ElseIf Cells(Target.Row, 4).Value = "0.021" Then
                Cells(Target.Row, 10).Value = "Y3"
            ElseIf Cells(Target.Row, 4).Value = "0.055" Then
                Cells(Target.Row, 10).Value = "Y4"
            Else: Cells(Target.Row, 10).Value = "False"
            End If

        Application.EnableEvents = True
    End If

End Sub
0 голосов
/ 26 октября 2018

Попробуйте

Sub ghjkk()
    Dim c As Range
    Dim rng As Range
    Set rng = Selection.Offset(0, 3)
    For Each c In rng
        c.FormulaR1C1 = _
 "=IF(RC[-3]=0.2,""Y5"",IF(RC[-3]=0.1,""Y6"",IF(RC[-3]=0,""V0"",IF(RC[-3]=0.021,""Y3"",IF(RC[-3]=0.055,""Y4"",FALSE)))))"
    Next c
End Sub
...