Excel / Calc ІНДЕРЕКТНА АДРЕСА + РЯДКА + КОЛІННА альтернатива чистішого


1

Я не є звичайним користувачем Excel / Calc, але наразі використовую LibreOffice Calc, щоб записати гроші та виїзди. Мої дві функції внизу працюють добре за призначенням, але все ж я хотів би знати про більш чисту альтернативу; особливо для першого.

Це обчислює добовий дохід,

= НЕПРАВНИЙ (АДРЕСА (ROW (), COLUMN () - 2)) - IF (ISNUMBER (INDIRECT (АДРЕСА (ROW () - 1, 1), COLUMN () - 2)))) COLUMN () - 2)), 0) -INDIRECT (ADDRESS (ROW (), COLUMN () - 1))

і це обчислює чистий дохід,

= СУМКА (НЕПРЯМКА (АДРЕСА (2, КОЛІН () - 1) & ":" & АДРЕСА (ROW (), COLUMN () - 1)))

Чому ти так використовуєш indirect/address? Схоже, ви можете просто використовувати стандартні посилання на комірки.
Кайл

@Kyle Я просто заглянув в Інтернет, і ось, здавалося, отримати поточний номер рядка / стовпця та використовувати його в інших функціях. Але я майже не знаю нічого про ці програми електронних таблиць.
MinjaeKim

Відповіді:


2

Те ж саме можна досягти набагато простіше за допомогою стандартних посилань на комірки. Ваша перша формула використовує лише відносні посилання. Якщо припустити, що формула введена в комірку D3, її можна записати так:

=B3-IF(ISNUMBER(B2),B2,0)-C3

Ваша друга формула використовує як абсолютні, так і відносні посилання. Цього разу, припускаючи, що ми перебуваємо в комірці E3, це можна записати так:

=SUM(D$2:D3)

Зауважте $ in D$2. Це абсолютна посилання, тобто, коли ви перетягуєте формулу вниз, верхня межа залишатиметься такою ж, а нижня межа розширюється вниз.


1

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

Пояснення оригінальних формул

Зразкові формули, які ви включили до запитання, можливо, були зроблені таким чином, щоб виділити взаємозв'язок між адресами комірок. Поки структура не змінюється, цей стиль звернення фокусується на логіці фізичних взаємозв'язків комірок. Зауважте, що якщо структура електронної таблиці зміниться, все зруйнується, оскільки посилання прив’язані до вихідної структури.

Щоб зрозуміти, що вони роблять, ADDRESS будує текстовий опис посилання на клітинку. Це дозволяє використовувати обчислення, щоб визначити, куди має посилатися посилання. Тут хороша коротка демонстрація . INDIRECT перетворює текстовий опис посилання на клітинку у фактичне посилання.

Отже, якщо ви хочете отримати більш чисту альтернативу, найчистішим було б просто використовувати фактичні посилання на клітинки, як відповідь Кайла. Якщо у вас є ситуація, коли ви дійсно хочете зосередити увагу на структурі електронних таблиць, є ще кілька способів впорядкувати це.

Адресація R1C1

Існує форма адресації під назвою R1C1, яка виражає адреси як абсолютні чи відносні рядки та стовпці таким чином, що їх можна обчислити та використати безпосередньо, не потребуючи АДРЕСУ, РОЗУМУ та КОЛІННЯХ функцій.

Для абсолютної адреси використовуйте номер рядка та номер стовпця після міток R та C. Так A3би і було R3C1.

Щодо відносної адресації, залиште номер для позначення поточного рядка або стовпця або поставте відносне число у квадратні дужки. Таким чином, комірка в тому ж рядку та два стовпчики зліва буде посилатися як RC[-2].

І в Excel, і в Calc є можливість змінити стиль адреси на R1C1, що стосується всього. Однак ви можете використовувати його в конкретних формулах, не роблячи цього, створюючи текстовий рядок і використовуючи INDIRECT (для розпізнавання стилю R1C1 необов'язковий параметр стилю адресації встановлений на нуль). Тож перша формула:

=INDIRECT(ADDRESS(ROW(),COLUMN()-2))-IF(ISNUMBER(INDIRECT(ADDRESS(ROW()-1,COLUMN()-2))), 
 INDIRECT(ADDRESS(ROW()-1,COLUMN()-2)),0)-INDIRECT(ADDRESS(ROW(),COLUMN()-1))

стане:

=INDIRECT("RC[-2]",0)-IF(ISNUMBER(INDIRECT("R[-1]C[-2]",0)), 
 INDIRECT("R[-1]C[-2]",0),0)-INDIRECT("RC[-1]",0)

Ви можете бачити, що це своєрідна стенограма для створення АДРЕСИ / РАДУ / КОЛИНИ.

ОФСЕТ

Типовий спосіб зробити це, хоча, коли вам потрібно зробити відносні стосунки очевидними, коротший за цей. Ви можете використовувати функцію OFFSET. Коротка форма для позначення однієї комірки є OFFSET(reference,rows,columns). Ви вказуєте початкову точку, а потім кількість рядків і стовпців від неї.

У ваших прикладах формула визначає, що таке поточна комірка, і ви могли це зробити в OFFSET, але це взагалі не потрібно. Зазвичай використовується фактична посилання на клітинку. Як і у відповіді Кайла, що, як правило, правильно перекладено, якщо ви скопіюєте формулу в іншу клітинку. OFFSET - це спосіб зробити явне відношення про місцезнаходження. Тож якби ваша перша формула була в комірці C5, це виглядало б приблизно так:

=OFFSET(C5,0,-2)-IF(ISNUMBER(OFFSET(C5,-1,-2)), 
 OFFSET(C5,-1,-2),0)-OFFSET(C5,0,-1)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.