Добавить конечный продукт в конце существующей формулы для каждой ячейки - PullRequest
0 голосов
/ 24 мая 2018

SUPPOSE ячейка G1 в моей рабочей таблице имеет следующую формулу = $ R $ 5 * I4 + $ S $ 5 * H4 + $ T $ 5 * G4 + $ U $ 5 * F4 + $ V $ 5 * E4 + $ W $ 5 * D4 + $ X $ 5 * C4 + $ Y$ 5 * B4

G2 имеет другую существующую формулу = $ R $ 5 * I4 + $ S $ 5 * H4 + $ T $ 5 * G4 + $ U $ 5 * F4

теперь к этой существующей формуле я хочудобавьте новый продукт суммы $ X $ 5 * A4, чтобы сделать новую формулу G1 такой, как эта

= $ R $ 5 * I4 + $ S $ 5 * H4 + $ T $ 5 * G4 + $ U $ 5 * F4 + $ V $ 5 *E4 + $ W $ 5 * D4 + $ X $ 5 * C4 + $ Y $ 5 * B4 + $ X $ 5 * A4

и G2, как это = $ R $ 5 * I4 + $ S $ 5 * H4 +$ T $ 5 * G4 + $ U $ 5 * F4 + $ X $ 5 * A5

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

Я сделал этот код, посмотрев на комментарии:

        Sub test2()

        Dim myRange As Range, Cell As Range
        Dim targetsheet As Worksheet
        Set targetsheet = Worksheets("Sheet1")
        Dim abc As String


        For i = 1 To 14
         abc = "R7" & "C" & (i + 24)
            With targetsheet
            Set myRange = .Range(.Cells(77, i + 2), .Cells(87, i + 15))
            End With
        '    MsgBox myRange
            For Each Cell In myRange
                If IsEmpty(Cell) Then
                'MsgBox ("=" & abc & "*R[-75]C[" & (-i + 1) & "]")

                    Cell.FormulaR1C1 = "=" & abc & "*R[-75]C[" & (-i + 1) & 
                       "]"
                Else
                    Cell = Cell.FormulaR1C1 & "+" & abc & "]*R[-75]C[" & (-i 
                  + 1) & "]"
                End If
            Next Cell
        Next i

        End Sub

сейчас этот код работает хорошо для i = 1, но как только мне исполнится 2;значение Cell.FormulaR1C1 становится R7C25 * R [-75] C , пожалуйста, помогите мне исправить это.БЛАГОДАРЯ

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Поскольку вы можете добавить $X$5*A4 в начало формулы, почему бы вам не использовать инструмент replace, доступный в Excel?Просто замените = на =$X$5*A4+ во всех ячейках.

Если вы хотите динамическую ссылку на A4, а первая ячейка, которую вы хотите изменить, это G1 (ячейки, которые на самом деле ссылаются на * 1009)*), вместо этого вместо =$X$5*INDIRECT(ADDRESS(ROW()+3;COLUMN()-6))+.

0 голосов
/ 24 мая 2018

Вы можете получить и установить формулу ячейки с помощью .Formula, например

Dim myCell As Range
Set myCell = Range("A1")
myCell = myCell.Formula & "+$X$5*A4"

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

РЕДАКТИРОВАТЬ

В соответствии с обновлениями вашего вопросаВы все еще можете использовать этот подход, циклически проходя по каждой ячейке и используя формулы R1C1.

Sub test()

Dim myRange As Range, Cell As Range
Set myRange = Range("G1:J8")

For Each Cell In myRange
    Cell = Cell.FormulaR1C1 & "+R5C24*R[4]C[-6]"
Next Cell

End Sub

R5C24 - это абсолютная ссылка на ячейку $X$5, тогда как R[4]C[-6] - это ваш относительный путьиз текущей ячейки.

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