2016-05-29 3 views
0

私は、約400社の株式の時価総額のデータを取り上げています。各企業のデータは2000年から2016年の範囲ですが、6月の最終日と12月の最終日に時価総額を選択したいと考えています。さらに、これらの最後の日付は、必ずしも月の日付の終わりを意味しない。例えば; 12月には、12月14日に1社が時価総額利用可能となりました。親切に助けて、私は2016年Excel-特定の月の無作法な最後の日付から値を取得する

に6月の月の最後の「利用可能」時価総額と2000年からの12月の月の最後の可能な時価総額を選択したい、もう一度私の問題を要約する

私に、この問題に近づく方向を教えてください。利用可能な値の最終日は月の終値を意味するものではないため、月末の式を使用することはできません。ルックアップ機能も実行可能に見えません。

もう一度お申し込みいただければ幸いです。前もって感謝します。

サンプルデータ

Date - Closing - Market Capitalization 
2-Jan - 23.5 - 177,282,000  
1-Jan - 22  - 177,282,000  
31-Dec - 33  - 177,282,000  
30-Dec - 33  - 177,282,000  
4-Jul - 31  - 120,960,000 
2-Jul - 31.1 - 113,400,000 
1-Jul - 31  - 113,400,000 
28-Jun - 30  - 113,400,000 
27-Jun - 30  - 113,400,000 
26-Jun - 30.1 - 113,400,000 

Data picture

+0

を。まず、vlookupを使ってデータを整理します。時価総額を持たない日付は "#N.A"という値になります。だから、私がしようとしているのは、私がVLOOKUPを使ってデータを整列させたときに、私がワーク・シート上で最後の6月の時価総額と12月の時価総額を取得するということです。 –

+0

あなたのデータを見ることは、あなたが必要としている数式を理解する上で大きな道のりになります。あなたの質問にテキストの小さなサンプルを提供して、人々がそれをコピーして貼り付けることができるように助けてくれるでしょう。 –

+0

現在、私たちはデータが水平に、垂直に、または平らに散らばっているかどうかはわかりません。あなたの日付が、日付または日付の文字列として表示するようにフォーマットされた優れた日付であるかどうかはわかりません。あなたのヘッダーが何であれ、私たちはそれを知りません。 –

答えて

1

あなたは、この配列数式を使用することができます。

=INDEX($C$2:$C$11,MATCH(TRUE,(MIN(IF($A$2:$A$11<=EOMONTH(E6,0),EOMONTH(E6,0)-$A$2:$A$11))=IF($A$2:$A$11<=EOMONTH(E6,0),EOMONTH(E6,0)-$A$2:$A$11)),0)) 

は配列式で、Ctrl-Shift-Enterで確定する必要があります。正しく実行されたら、excelは数式の周りに{}を入れます。

enter image description here


あなたは、あなたは、この非配列数式を使用することができます昇順で日付を並べ替えることができた場合は、次のデータのさらなる背景Foを

=INDEX($C$2:$C$11,MATCH(EOMONTH(E6,0),$A$2:$A$11,1)) 

enter image description here

+1

今私はすべての質問を8P heheheソートしました –

+0

明らかにEOMONTHはarray.aggregateで動作しません。 = E2)、1)) '= INDEX($ C $ 2:$ C $ 11、総計(15,6、ROW($ A $ 2:$ A $ 11/EOMONTH($ A $ 2:$ A $ 11,0) –

+0

まだ値を取得できません。私はそれを正しくやっていないと思う。 –

1

潜在的なソリューションを提供します。私が最終的に手に入れるための小さな注意点があります。

列Eに1日を検索したい検索対象のリストを生成します。彼らは6月と12月の月の終了日になります。各行は、前の日付を6ヶ月前に進めます。 E2で

は、私たちは時にシーダの日付を入れて:私たちは、次のように私たちのリストジェネレータを入れて、限り我々が必要とダウンコピーE3で

=EOMONTH(DATE(2000,6,1),0) 

=EOMONTH(E2,6) 

をG2で我々次の数式を使用して、必要な分だけコピーしてください。

=IFERROR(INDEX($C$2:$C$11,AGGREGATE(15,6,ROW($A$2:$A$11)/((MONTH($A$2:$A$11)=MONTH(E2))*(YEAR($A$2:$A$11)=YEAR(E2))),1)-1),"NOT FOUND") 

注意しなければならないのは時価総額です6月または12月の少なくとも月に発生します。それらの月の外は見られません。

あなたが引っ張っ数が月のそのではない、実際に最後の日以降に対応して、あなたが列Fにその日付を置くことができると日付を表示したい場合は、次の概念

=IFERROR(INDEX($A$2:$A$11,AGGREGATE(15,6,ROW($A$2:$A$11)/((MONTH($A$2:$A$11)=MONTH(E2))*(YEAR($A$2:$A$11)=YEAR(E2))),1)-1),"NOT FOUND") 

証明

Proof of Concept

関連する問題