Как перенести значение суммы на другую страницу (получение ошибки = СУММА (# ССЫЛКА!))

#excel #vba

#excel #vba

Вопрос:

В данном случае я использую Range("a5") для SUM ячеек a1: a3. Как только СУММА будет завершена, я хочу запустить VBA, а затем вставить SUM результат из sheet1 на sheet2

Если число вводится непосредственно, Range("a5") все работает нормально.

Я работал с PasteSpecial , на сегодняшний день у меня не было успеха с этим.

Я бы подумал, что value или value2 достиг бы этой цели, но пока этого не произошло. У меня такое чувство, что я что-то упускаю из виду довольно просто.

 Sub TransferSum()

    Dim Rng As Range

    Set Rng = Worksheets("Sheet1").Range("a5")

    Rng.Copy

    Worksheets("Sheet1").Paste Destination:=Worksheets("Sheet2").Range("a1")

    Application.CutCopyMode = False

End Sub
 

Ответ №1:

Ваша формула ссылается на ячейки над ее местоположением, но выше A1 ячеек нет, отсюда и ошибка. Кроме того, ваш синтаксис был отключен.

Если вы просто хотите перенести значение…

 Sub TransferSum()

    Dim Rng As Range

    Set Rng = Worksheets("Sheet1").Range("a5")

    Rng.Copy
    Worksheets("Sheet2").Range("a1").pastespecial xlvalues
    'OR IN ONE LINE
    Worksheets("Sheet2").Range("a1").value=rng.value 'or Value2

End Sub
 

Комментарии:

1. Отлично, я надеялся сохранить это в одной строке. Если у вас есть время, я не уверен, что вы подразумеваете под «Ваша формула ссылается на ячейки над ее местоположением, но нет ячеек выше A1» Означает ли это, что при текущей записи вставка будет выше A1? Я думал, что значение по умолчанию с прошлым всегда находится в таблице.

2. Ваша исходная формула была в A5, но ссылочные ячейки над ней (A1: A3). При перемещении в другое место относительные ссылки будут сохранены, но выше A1 ячеек нет. Вы можете проверить это самостоятельно вручную на формуле рабочего листа.