Я соединяю рабочую книгу для отслеживания портфеля запаса. Основной лист содержит таблицу со списком транзакций. От этого я хотел бы составить таблицу обзора на другом листе только с одной строкой на уникальный символ запаса, который включает вещи как базовая стоимость, возвраты, и т.д. Проблема состоит в том, что ничто, что я попробовал, не обновляет таблицу обзора правильно, когда строки добавляются к таблице транзакций. Самое близкое, которое я имею, является чем-то как следующее:
Однако это требует применения той формулы к каждой ячейке в основном столбце листа обзора. И даже затем диапазон таблицы не расширяется вниз для включения новых строк, поскольку они становятся допустимыми. По существу я ищу путь, который автодобавляет строки к таблице и копирует предыдущую формулу строк на основе другой таблицы, изменяющейся, не используя VBA.
Конкретный пример может лучше объяснить мою цель. Предположите, что GOOG был просто добавлен, и другие транзакции уже существовали.
Это - шкаф, который я имею к получению автоматического поведения обновления.
Sheet1
Symbol Type Shares Price
F Buy 100 12
MSFT Buy 100 25
MSFT Buy 50 28
F Buy 100 16
GOOG Buy 25 550
Sheet2
Symbol Quantity
F 200
MSFT 150
------------------------------------------------------------ // Table Boundary
GOOG 25
{=UNIQUE_LIST(Sheet1[Symbol], A5)} =SUMIF(Sheet1[Symbol], A5, Sheet1[Shares])
{=UNIQUE_LIST(Sheet1[Symbol], A6)} =SUMIF(Sheet1[Symbol], A6, Sheet1[Shares])
... // Formulas start at row 2 and extend down tons of extra rows
// Table boundary didn't extend to include GOOG
Идеально я хочу, чтобы Sheet2 больше походил на это, где формулы копируются только при необходимости
Sheet2
Symbol Quantity
F 200
MSFT 150
GOOG 25
------------------------------------------------------------ // Table Boundary
// Table extended and no extra formulas
Добавление строки
Кажется, что кто-то был вдохновлен моим вопросом и описал все сообщение в блоге о том, как сделать это
http://www.get-digital-help.com/2011/01/31/tracking-a-stock-portfolio-in-excel-auto-update/
Remeber, что обычно существует много способов достигнуть того же результата с Excel. Возможно, можно использовать функции базы данных. В примере Вы дали при ссылке на базу данных как на Sheet1! A:D или определяют имя, которое относится к той ссылке затем, можно добавить столько строк, сколько Вам нравится. Функции базы данных Unfortunately являются ужасными и трудными использовать из-за способа, которым необходимо указать критерии.
Другая опция состояла бы в том, чтобы использовать массив forumla. что-то как: {=sum (если (sheet1! a2:a999 = "MSFT", sheet1! b2:b999,0))}
Вы пишете:
Однако это требует применения той формулы к каждой ячейке в основном столбце листа обзора. И даже затем диапазон таблицы не расширяется вниз для включения новых строк, поскольку они становятся допустимыми.
Вы не можете сбежать из этих двух требований, если, по крайней мере, Вы не устанавливаете максимальную длину списка в Вашем первом листе.
Neil,
При использовании XL 2003 или позже необходимо попытаться поместить исходные данные в Список (XL 2003) или Таблица (то же самое, переименованное в XL 2007, 2010). Затем используйте свой Список/Таблицу в качестве источника Сводной таблицы на другом листе. Это отвечает Вашим требованиям и для данных и для отчета, поскольку я понимаю их. Источник центра расширится и сократится со Списком/Таблицей.
Единственный протест состоит в том, что Сводные таблицы не обновляются автоматически, когда их исходные данные изменяются. Необходимо будет поразить Кнопку Обновить. Если Вы можете использовать VBA затем, Вы могли бы записать код события, который инициировал обновление сводной таблицы каждый раз ячейка в изменениях Списка/Таблицы.