Excel - автозаполнение (копирование) копирует формулы, но отображает оригинальное значение - PullRequest
0 голосов
/ 26 февраля 2019

Я создал несколько макросов для анализа данных о дожде из аэропорта.Макросы работают нормально, когда я печатаю их вручную в каждую ячейку.

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

Например, C5 имеет формулу: «= twoday (B5)» иимеет значение 0,2.Когда я скопирую, я хочу, чтобы C6, C7 и т. Д. Отображали «= twoday (B6)», «= twoday (B7)» и т. Д. И они показывают, но они также показывают значение 0,2, но должны показывать другоезначение.Когда я щелкаю по ячейке, затем по строке формул и нажимаю клавишу ввода, она правильно показывает желаемое значение.

Вместо того, чтобы нажимать клавишу ввода в 4000 ячеек, как правильно скопировать макросы вниз по столбцам?Я попытался проверить настройки расчета для автоматического / ручного (и с помощью F9), и пробовал оба безрезультатно.Что-нибудь еще, что я могу попробовать?

Вот код:

Public Function twoday(rain_current_day)

'Allow x to be the range of cells that we check for the rain data
'Offset = row, column

Dim x As Range
Set x = Range(ActiveCell.Offset(-1, -1), ActiveCell.Offset(, -1)) 'adjacent 
cell (left) and 1 cell up (2 data points total)

'find out if any of the important rows are blank or text data
If IsNumeric(x.Cells(1, 1)) And Not IsEmpty(x.Cells(1, 1)) Then
    twoday = WorksheetFunction.Sum(x)
    Else
    twoday = ""
End If

End Function

1 Ответ

0 голосов
/ 26 февраля 2019

Основная проблема в том, что ваша функция на самом деле не принимает данные.Таким образом, ваш вывод не зависит от ячейки, выбранной вами для включения в формулу.


Попробуйте использовать что-то похожее на приведенную ниже функцию.Обратите внимание, что эта функция управляется вводом, который вы ей даете.Независимо от того, какую ячейку вы поместите в формулу, она всегда будет суммировать входную ячейку и ячейку над ней.

Public Function TWODAY(Target As Range) As Double

    TWODAY = Target + Target.Offset(-1)

End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...