Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / заменить массив одной ячейкой / 7 сообщений из 7, страница 1 из 1
01.10.2012, 17:08
    #37979007
yaspers
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
заменить массив одной ячейкой
здравствуйте, помогите, пожалуйста, разобраться со следующим вопросом

используя формулу АСЧ пытаюсь посчитать суммарную амортизацию за n-ое количество лет
записал следующую формулу
="Суммарная амортизация за "&C9&ЕСЛИ(C9=1;" год";ЕСЛИ(C9<=4;" года";" лет"))&" составляет "&СУММ(АСЧ(C6;C7;C8;{1;2;3;4;5;6;7;8;9;10}))
все работает, массив забиваю вручную в зависимости от количества лет, а хотелось бы сделать так, чтобы значение количества лет вносить в одну ячейку и чтобы в формуле отображалось это в виде:
Суммарная амортизация за [ссылка на ячейку, указывающая за сколько лет] составляет [сумма которую составила амортизация за указанное количество лет], с тем чтобы вставить количество лет просто в текст проблем нет, а вот как заменить массив,так чтобы это было ссылкой на одну ячейку не знаю

файл прикреплен
...
Рейтинг: 0 / 0
01.10.2012, 18:04
    #37979132
DV68
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
заменить массив одной ячейкой
yaspers,

Код: vbnet
1.
2.
="Суммарная амортизация за "&C9&ЕСЛИ(C9=1;" год";ЕСЛИ(C9<=4;" года";" лет"))&" составляет "&
СУММПРОИЗВ(АСЧ(C6;C7;C8;СТРОКА(A1:ИНДЕКС(A1:A99;C8))))
...
Рейтинг: 0 / 0
02.10.2012, 04:18
    #37979482
yaspers
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
заменить массив одной ячейкой
DV68, спасибо

но формула не совсем работает, она считает постоянно сумму полной амортизации. если я меняю в ячейке период, то амортизация не изменяется, и остается такой же = 45000. я пытаюсь сделать чтобы при различных значениях периода, которые я вношу в одну ячейку учитывались при подсчете амортизации.
то есть если я ставлю период 2 года, то должна быть так: Суммарная амортизация за 2 года составляет 15545,4545454545
3 года: Суммарная амортизация за 3 года составляет 22090,9090909091
5 лет: Суммарная амортизация за 5 лет составляет 32727,2727272727
так возможно сделать?
...
Рейтинг: 0 / 0
02.10.2012, 10:09
    #37979652
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
заменить массив одной ячейкой
Может быть надо не С8, а С9?
="Суммарная амортизация за "&C9&ЕСЛИ(C9=1;" год";ЕСЛИ(C9<=4;" года";" лет"))&" составляет "&
СУММПРОИЗВ(АСЧ(C6;C7;C8;СТРОКА(A1:ИНДЕКС(A1:A99;C9))))
...
Рейтинг: 0 / 0
02.10.2012, 13:02
    #37980033
yaspers
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
заменить массив одной ячейкой
The_Prist, спасибо, так действительно работает, видимо DV68 просто ошибся с названием ячейки
извините, если вопрос покажется глупым, но не мог бы мне кто-нибудь объяснить или может ссылка есть где описывается значение функции ИНДЕКС(А1:А99;С9)??
именно, мне непонятно почему массив указывается А1:А99, а номер строки(?) С9 (или что здесь обозначает С9)?? что значит А1:А99 почему именно А и почему от 1 до 99? в описании функции ИНДЕКС на сайте office.microsoft.com сказано, что ссылка должна находится внутри массива, и она должна быть в виде цифры, а не в виде ссылки на ячейку, иначе будет выдаваться ошибка #ссылка, а про такой случай ничего не говорится
в общем как работает функция =СТРОКА(A1:ИНДЕКС(A1:A99;С9)) я разобрался, но вот именно с функцией индекс не совсем понятно

буду очень благодарен, если просветите :)
...
Рейтинг: 0 / 0
02.10.2012, 14:45
    #37980270
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
заменить массив одной ячейкой
yaspers,

Сама функция ИНДЕКС возвращает ячейку. Т.е. не именно значение ячейки, а как бы ссылку на ячейку, что позволяет использовать её в формулах подобным образом. Разбираем. Если брать конкретно Ваш пример =СТРОКА(A1:ИНДЕКС(A1:A99;С9)).
А1:А99 - это массив ячеек. Первый аргумент функции ИНДЕКС.
С9 - ссылка на ячейку с номером строки в массиве ячеек первого аргумента, ячейку из которого надо вернуть. Т.е. это 9-ая по счету ячейка в массиве А1:А99. Иначе говоря - А9. Именно эту ячейку нам возвращает функция ИНДЕКС.
Получается - А1:А9. Но т.к. нам нужен переменный массив чисел({1;2;3;4;5;6;7;8;9}), а не ссылки, то необходимо полученный массив ячеек А1:А9 перевести в числа. Для этого мы и используем СТРОКА.

Так же ИНДЕКС можно использовать в других функциях. Например СУММ:
=СУММ(A1:ИНДЕКС(A1:A99;C9))

На примере СУММ может быть даже более понятнее станет принцип работы функции.
...
Рейтинг: 0 / 0
02.10.2012, 15:22
    #37980374
yaspers
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
заменить массив одной ячейкой
The_Prist, огромное Вам спасибо за объяснение и за потраченное время!!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / заменить массив одной ячейкой / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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