Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Растяжение формулы / 15 сообщений из 15, страница 1 из 1
23.08.2005, 13:48:49
    #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
23.08.2005, 14:22:54
    #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
24.08.2005, 09:24:25
    #33231113
Loll
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Растяжение формулы
Супер! работает!

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

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

Кстати, а если мне надо вставить формулу и диапазон? То есть к примеру в ячейку X мне надо вставить формулу которая выполняет функцию СУММ в диапазоне, который начинается с ячейки на 2 выше X и до скажем X4?
...
Рейтинг: 0 / 0
24.08.2005, 10:59:04
    #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
24.08.2005, 13:00:36
    #33231649
Loll
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Растяжение формулы
Fixed...
А что со знаком "&" ? Без него можно?
...
Рейтинг: 0 / 0
24.08.2005, 13:04:22
    #33231662
Растяжение формулы
Формула же формируется путем "склеивания" соответсвущих значений, операторов, функций.

А как ты хотела без &?
...
Рейтинг: 0 / 0
24.08.2005, 13:29:44
    #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
24.08.2005, 14:52:14
    #33231957
Растяжение формулы
Ты, наверное, путаешь символ & с символом $.
...
Рейтинг: 0 / 0
24.08.2005, 14:56:20
    #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
24.08.2005, 15:09:16
    #33232012
Растяжение формулы
Если хочешь относительные ссылки пиши:

Код: plaintext
.Address(False, False)
...
Рейтинг: 0 / 0
25.08.2005, 07:05:53
    #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
25.08.2005, 08:21:40
    #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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Растяжение формулы / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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