Використання попередньо існуючої функції для нового рядка


1

У мене є документ Excel, який містить X стовпців і N кількість рядків.

Самий останній стовпець рядка виконує a SUMз перших стовпців X-1. Проблема у мене полягає в тому, що користувач цього документа Excel поступово додає рядки до документа, і через це функція ще не існує в останньому стовпчику для нових рядків.

Мені потрібен спосіб, щоб ця функція динамічно існувала в нових рядках (користувач не вміє в Excel і не має можливості просто перетягнути функцію вниз).


Це легко зробити так, ніби функція вводиться в комірку динамічно, але я не маю уявлення, як реально виконати подібне оновлення динамічної комірки. Яку версію excel ви використовуєте?
soandos

Яку версію Excel ви використовуєте? З того, що я зауважую, бажана поведінка є автоматичною в Excel 2007.
Excellll

1
Я також повинен запитати, як користувач вводить нові дані. Якщо користувач вводить дані вручну, по одному рядку, Excel продовжить формулу SUM до нового рядка. Однак якщо нові рядки вставити туди, то формула не поширюватиметься.
Excellll

1
Чи є щось не так у навчанні користувача? Все, що він / вона повинен зробити, це натиснути Ctrl + D в останньому стовпчику для нових рядків.
Ellesa

Відповіді:


1

На жаль, користувач, який не може робити базові речі, є досить поширеним явищем. Ви можете вдатися до чогось, що повністю переписує формулу (що, правда, надмірно), але подивіться, чи зможете ви адаптувати цю ідею у події Worksheet_SelectionChange. Або можливо ввімкнення макросів також знизить їх.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 LastRow = ActiveSheet.UsedRange.Rows.Count
 Range("D2:D" & LastRow).Formula = "=SUM(INDIRECT(""A""&ROW()&"":C""&ROW()))"
End Sub

для субтоталів

Range("D2:D" & LastRow).Formula = "=SUBTOTAL(9,(INDIRECT(""A""&ROW()&"":C""&ROW())))"

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

0

Можливо, ви могли б зробити це по-справжньому динамічним за допомогою VBA, але я думаю, що це надмірно для простого додавання формули до комірки. Що ви можете зробити, це зробити так, щоб ця клітина була порожньою, поки дані не будуть додані до відповідних комірок, а потім перетягніть її вниз на сотні чи тисячі рядків.

Наприклад, =IF(LEN(A1)=0,"",A1+B1)буде показано порожню клітинку, якщо A1 не містить даних, але виконає функцію A1 + B1, якщо вона є. Якщо перетягнути його внизу під останнім рядком, стовпець буде порожнім, поки дані не будуть додані до наступної комірки стовпця А.

Існує кілька інших формул, за допомогою яких ви можете перевірити наявність використовуваних комірок, наприклад =ISBLANK(A1)АБО, =ISTEXT(A1)залежно від того, як ви хочете перевірити наявність даних. Я думаю, що з функцією LEN найпростіше працювати. Ви також можете робити такі дії, =IF(LEN(A1)+LEN(B1)=0,"",A1+B1)які запускатимуть формулу, якщо будь-яка клітина має дані, або =IF(OR(LEN(A1)=0,LEN(B1)=0),"",A1+B1)яка буде запускати формулу, лише якщо обидві комірки мають дані.

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


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

0

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

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