Ссылка на ячейки с индексом - PullRequest
0 голосов
/ 05 мая 2020

Я борюсь с, вероятно, простой проблемой, но Google мне не помогает.

    With Worksheets("Fake").Range("A5:BE5")
    Set GrandTotal = .Find("Grand Total", LookIn:=xlValues)
    If Not GrandTotal Is Nothing Then
        GrandTotal = GrandTotal.Address
        GrandTotalColumn = Range(GrandTotal).Column
        GrandTotalColumnLetter = Split(Cells(1, GrandTotalColumn + 1).Address, "$")(1)
        Debug.Print GrandTotal
        Debug.Print GrandTotalColumn
        Debug.Print GrandTotalColumnLetter
    End If
    End With


    Cells(9, GrandTotalColumn + 1).Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-21]="""","""",IF(ISNUMBER(SEARCH(""total"",RC[-21])),"""",RC[-22]))"

    Cells(9, GrandTotalColumn + 1).Select
    Selection.Copy
    Debug.Print GrandTotalColumnLetter
    With Worksheets("Fake")
    .Range(.Cells(9, GrandTotalColumn + 1), .Cells(10000, GrandTotalColumn + 1)).Select
'ERROR HERE
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

    .Range(.Cells(9, GrandTotalColumn + 1), .Cells(10000, GrandTotalColumn + 1)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    End With

Но, очевидно, он не работает ... Как я могу сослаться на это ...? Я пробовал также получить "GrandTotalColumnLetter", но я все еще не знаю, как вставить его в диапазон для выбора, хотя я знаю, как получить номер столбца и букву ..

1 Ответ

0 голосов
/ 05 мая 2020

Попробуйте это. Он находит объект диапазона, в котором находится «Общая сумма гранта», затем использует атрибут столбца для выбора диапазона рядом с ним (1 столбец справа). Я сохранил GrandTotal как диапазон, поэтому ваш тест по-прежнему работает так же.

Хорошо, я отредактировал это, чтобы включить ваш новый код. Это работает, чтобы поместить fromula в столбец от строки 9 до строки 10,000. На самом деле вам не нужно выполнять весь такой выбор, копирование и вставку, но вот ваш код. Проблема заключалась в том, что вы помещали формулу в «активную ячейку» после выбора диапазона от строки 1 до 10 000, она помещала формулу только в первую строку, а не в строку 9.

With Worksheets("Fake")
    Set GrandTotal = .Range("A5:BE5").Find("Grand Total", LookIn:=xlValues)
    If Not GrandTotal Is Nothing Then
        .Range(.Cells(1, GrandTotal.Column + 1), .Cells(10000, GrandTotal.Column + 1)).Select

    End If
End With


    Cells(9, GrandTotal.Column + 1).FormulaR1C1 = _
        "=IF(RC[-21]="""","""",IF(ISNUMBER(SEARCH(""total"",RC[-21])),"""",RC[-22]))"

    Cells(9, GrandTotal.Column + 1).Select
    Selection.Copy
    Debug.Print GrandTotalColumnLetter
    With Worksheets("Fake")
    .Range(.Cells(1, GrandTotal.Column + 1), .Cells(10000, GrandTotal.Column + 1)).Select
'ERROR HERE
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

    .Range(.Cells(9, GrandTotal.Column + 1), .Cells(10000, GrandTotal.Column + 1)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    End With
...