powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Растяжение формулы
15 сообщений из 15, страница 1 из 1
Растяжение формулы
    #33229955
Loll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Когда-то я пыталась найти решение этой задачки, но так и не смогла... В общем так:
Нужно добавить добавть формулу которая будет перемножать содержимое двух столбцов, но не во все подряд, а если в строках по этим столбцам ячейки не пустые, если пустые то соответственно формулу вставлять не надо.

То есть в B и D есть числа, но только в строках 1 и 3, соответственно в C1 и С3 должна появиться формула перемножающая B и D, а C2 останеться пустой так как в B2 и D2 чисел нет.

A B C D
1 x x
2
3 x x

Все вроде просто, но количество строк всегда разное и пустых строк разное количество(то есть в одном проекте это строка 5 в другом 10, в третьем пустой строки нет вообще).
...
Рейтинг: 0 / 0
Растяжение формулы
    #33230067
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    Dim cel As Range
    Dim rng As Range
    
    Set rng = Range("B:B")
    
    For Each cel In rng
        If Not (IsEmpty(cel.Value) Or _
          IsEmpty(cel.Offset( 0 ,  2 ))) Then
            cel.Offset( 0 ,  1 ).Formula = _
              "=" & cel.Address & "*" & cel.Offset( 0 ,  2 ).Address
        End If
    Next cel
...
Рейтинг: 0 / 0
Растяжение формулы
    #33231113
Loll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Супер! работает!

PS Не повторяйте мою ошибку, не задавайте Set rng = Range("B:B")! До утра будете наблюдать процесс...
...
Рейтинг: 0 / 0
Растяжение формулы
    #33231122
Loll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати... занк "&" обязательное явление? Мне формула без него нужна.
...
Рейтинг: 0 / 0
Растяжение формулы
    #33231123
Не знаю как у вас до утра, я наблюдаю всего секунд 5.
...
Рейтинг: 0 / 0
Растяжение формулы
    #33231176
Loll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Пользователь2

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

Кстати, а если мне надо вставить формулу и диапазон? То есть к примеру в ячейку X мне надо вставить формулу которая выполняет функцию СУММ в диапазоне, который начинается с ячейки на 2 выше X и до скажем X4?
...
Рейтинг: 0 / 0
Растяжение формулы
    #33231293
LollВполне возможно, вариант с которым я до утра ждала был с проставление формулы в любом случае, то есть вне зависимоти от того пустые ячейки или нет.
Это уже похоже на правду. Задавайте точнее условия, что избежать подобных ситуаций.

LollКстати, а если мне надо вставить формулу и диапазон? То есть к примеру в ячейку X мне надо вставить формулу которая выполняет функцию СУММ в диапазоне, который начинается с ячейки на 2 выше X и до скажем X4?
Пусть А1 будет ячейкой Х.

Код: plaintext
1.
    Range("A1").Formula = "=SUM(" & rng.Offset( 2 ,  0 ).Address & ":" _
      & rng.Offset( 4 ,  0 ).Address & ")"
...
Рейтинг: 0 / 0
Растяжение формулы
    #33231649
Loll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fixed...
А что со знаком "&" ? Без него можно?
...
Рейтинг: 0 / 0
Растяжение формулы
    #33231662
Формула же формируется путем "склеивания" соответсвущих значений, операторов, функций.

А как ты хотела без &?
...
Рейтинг: 0 / 0
Растяжение формулы
    #33231731
Loll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну когда я создаю формулу вручную то в строке формул появляется нечто вроде =F11*B11 А твоя формула получается следующей =$B$11*$F$11 и растянуть ее на соседние ячейки невозможно :(

Кстати последний указанный тобой код не пашет :(

В идеале я понимаю так:
Sub тест()

Dim rngX As Range
ActiveCell.Formula = "=SUM(" & rngX.Offset(2, 0).Address & ":" _
& Range("D4").Offset(4, 0).Address & ")"

End Sub

но это не работает :(
...
Рейтинг: 0 / 0
Растяжение формулы
    #33231957
Ты, наверное, путаешь символ & с символом $.
...
Рейтинг: 0 / 0
Растяжение формулы
    #33231976
LollКстати последний указанный тобой код не пашет :(
Какая ошибка?

Lollно это не работает :(
Попробуй так:
Код: plaintext
1.
2.
3.
4.
5.
    Dim rng As Range
    
    Set rng = ActiveCell

    rng.Formula = "=SUM(" & rng.Offset( 2 ,  0 ).Address & ":" _
      & rng.Offset( 4 ,  0 ).Address & ")"
...
Рейтинг: 0 / 0
Растяжение формулы
    #33232012
Если хочешь относительные ссылки пиши:

Код: plaintext
.Address(False, False)
...
Рейтинг: 0 / 0
Растяжение формулы
    #33232988
Loll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim cel As Range
Dim rngD As Range

Set rng = Range("D4:D50")

For Each cel In rng
If Not (IsEmpty(cel.Offset(0, 2)) Or _
IsEmpty(cel.Offset(0, -2))) Then
cel.Offset(0, 0).Formula = _
"=" cel.Offset(0, -2).Address(False, False) "*" cel.Offset(0, 2).Address(False, False)
End If
Next cel

Так что ли? Но он прям сразу красным выделяет мол ошибка!
...
Рейтинг: 0 / 0
Растяжение формулы
    #33233035
Я же все расписал как надо.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    Dim cel As Range
    Dim rng As Range
    
    Set rng = Range("D4:D50")
    
    For Each cel In rng
        If Not (IsEmpty(cel.Offset( 0 ,  2 )) Or _
          IsEmpty(cel.Offset( 0 , - 2 ))) Then
            cel.Formula = "=" _
              & cel.Offset( 0 ,  2 ).Address(False, False) _
              & "*" & cel.Offset( 0 , - 2 ).Address(False, False)
        End If
    Next cel
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Растяжение формулы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]