2

Моя проблема довольно проста, но описать ее несколько сложно.

У меня есть четыре ячейки, содержащие четыре целых числа, которые обозначают номера строк и столбцов двух ячеек. Например

     A    B
1    54   23
2    154  123

Итак, у нас есть две ячейки:

  • Ячейка № 1: строка 54, столбец 23 и
  • Ячейка № 2, строка 154, столбец 123.

Я хочу суммировать содержимое всех ячеек между ячейкой № 1 и № 2. Конечно, я хочу ссылки на ячейки A1, A2, B1, B2, содержащие соответствующие значения, а не фактические значения. Скажем, я хочу поместить эту сумму в ячейку C3.

В VBA это было бы просто (хотя и долго):

Range("C3").Cells = WorksheetFunction.Sum( _
    Range(Cells(Cells(1,1),Cells(1,2)), _
        Cells(Cells(2,1),Cells(2,2))))

Как это сделать без VBA?

Я пробовал что-то вроде =SUM(ADDRESS(A1,B1),ADDRESS(A2,B2)) . Моя проблема в том, что использование ADDRESS() возвращает текст. Если я помещаю этот текст в SUM(), он возвращает ошибку.

3 ответа3

2

[Отредактировано - я изначально неправильно понял вопрос]

Один из способов сделать это - использовать функцию OFFSET чтобы найти нужный диапазон.

=SUM(OFFSET(A1,A1-1,B1-1,A2-A1+1,B2-B1+1))

OFFSET(A1,A1-1,B1-1) представляет диапазон из одной ячейки, номера строк и столбцов которого являются значениями в A1 и A2. Последние два параметра (A2-A1+1 и B2-B1+1) - это количество строк и столбцов в новом диапазоне.

2

Косвенное и адресное энергозависимое использование ИНДЕКС:

=SUM(INDEX(A:AAA,A1,B1):INDEX(A:AAA,A2,B2))
0

Это не красивая покупка, кажется, работает.

=SUM(INDIRECT(ADDRESS(ROW(INDIRECT("R"&A1&"C"&B1,FALSE)),COLUMN(INDIRECT("R"&A1&"C"&B1,FALSE)))):INDIRECT(ADDRESS(ROW(INDIRECT("R"&A2&"C"&B2,FALSE)),COLUMN(INDIRECT("R"&A2&"C"&B2,FALSE)))))

Он преобразует содержимое ячейки в ссылки стиля R1C1 (т. R54C23). Оттуда он преобразует его в фиксированную ссылку (то есть $W$54). Затем он использует это как косвенно для подключения к функции SUM() .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .