Mam wyzwanie w programie Excel 2010. Mam listę identyfikatorów z następującymi zmiennymi: data_wydania, wartość skumulowana, termin zapadalności. Każdy identyfikator ma inną datę emisji i datę zapadalności, ale wszystkie znajdują się w przedziale (okresie analizy) od 2 stycznia 2007 r. Do 23 grudnia 2011 r. Krótki przykład poniżej:
Identyfikator ma 3 różne wartości: jedna dla 2 stycznia 2007 r. (Wartość: 1000); kolejny na 5 maja 2007 r. (wartość: 1500) i ostatni na 4 grudnia 2007 r. (wartość: 2700). Chcę, aby ten identyfikator miał zduplikowane wartości skumulowane przez czas jego aktywności.
Tak więc w tym przypadku w okresie od 2 stycznia 2007 r. Do 4 maja 2007 r. Wartość będzie wynosić (1000); następnie w okresie od 5 maja 2007 r. do 3 grudnia 2007 r. wartość wyniesie 1500; ostatecznie w okresie od 4 grudnia 2007 r. do terminu zapadalności (powiedzmy 3 marca 2010 r.) wartość pozostanie na poziomie 2700.
To dla mnie trudne wyzwanie, ponieważ mam 355 różnych identyfikatorów. Niektóre identyfikatory mają unikalne wartości, co oznacza, że ich skumulowana wartość będzie replikowana do dat zapadalności. Istnieją jednak inne identyfikatory, które mają różne wartości skumulowane (w różnych datach), które należy odpowiednio ułożyć.
Ostatecznym wynikiem będzie zestaw kolejnych dat między 2 stycznia 2007 r. A 23 grudnia 2011 r. (W kolumnach), a następnie odpowiednio 355 wierszy danych. Mogę wysłać krótki przykład w programie Excel, jeśli konieczne jest lepsze zrozumienie żądania.
źródło
Odpowiedzi:
Aby to zrobić, musisz trochę masować swoje dane przed utworzeniem matrycy.
ID
iissue_date
(od A do Z) w tej kolejności lub priorytecie.Dodaj kolumnę
end_date
. Wartośćend_date
będzie wcześniejsza od terminu zapadalności tego rekordu i na jeden dzień przed następną datą emisji dla tego konkretnego identyfikatora. Zakładając, żeID
jest w kolumnie A,issue_date
jest w kolumnie B imaturity_date
znajduje się w kolumnie D, wprowadź następującą formułę dlaend_date
pierwszego rekordu. Wypełnij.=TEXT(IF(A3=A2,MIN(B3-1,D2),D2),"mmm d, yyyy")
Na innym arkuszu utwórz szkielet swojej matrycy. Utwórz etykiety kolumn, wstawiając pierwszą datę, a następnie wypełniając do końca. Możesz uzyskać etykiety wierszy, wykonując zaawansowany filtr unikatowych rekordów na identyfikatorach w tabeli.
W lewej górnej komórce macierzy (B3 w tym przykładzie) wprowadź następującą formułę. „Surowy” to nazwa arkusza z oryginalnymi danymi.
=SUMPRODUCT(Raw!$C$2:$C$23,--(Raw!$A$2:$A$23=Matrix!$A3),--(DATEVALUE(Raw!$B$2:$B$23)<=Matrix!B$2),--(DATEVALUE(Raw!$E$2:$E$23)>=Matrix!B$2))
Wypełniaj w górę iw dół, aby wypełnić swoją matrycę. Zwróci wartość identyfikatora w tym dniu i 0, jeśli nie będzie dostępnych danych dla tej daty.
SUMPRODUCT () jest jedną z najmniej intuicyjnych, ale najbardziej przydatnych funkcji w programie Excel. Zasadniczo pomnoża odpowiednie wartości z każdego argumentu tablicy, a następnie sumuje te produkty. W tym przypadku tablice to skumulowane wartości z tabeli oraz tablice 0 i 1, które wskazują, czy kryterium zostało spełnione. Dlatego tylko wartość, dla której wszystkie kryteria są spełnione, będzie miała niezerowy produkt. Ponieważ tylko jeden rekord powinien spełniać wszystkie kryteria, suma będzie równa tej wartości.
Używam tutaj dat jako tekstu, ale te formuły powinny działać również dla dat sformatowanych jako daty w Excelu.
TEXT()
IDATEVALUE()
bity są przesadą w tym przypadku, ale wszystko powinno działać tak samo.źródło