2017-11-28 3 views
1

作成の手助けが必要です。Excel式 - インデックス一致アドレス間接ランク.avg

私はエクセルにエクスポートするSQLのデータを持っています。 excelではrange/array内の特定の週の値に基づいてパーツのランクを決定するformulaがあります。列は毎週のバケットで、エクスポートするたびに毎週のバケットが変更されます(過去の日付はありません)。私はランクを特定の日付に固定しておきたいと思いますが、週ごとの輸出は特定の列が内側に1列分入っています。

私は毎週のバケット配列で特定の値の位置を見つけるエクセル式が必要です。これが決定されたら、rank.avg関数によって参照されるこの列アドレス(たとえば「AX」)を変換する別の式が必要です。

これは、一致、インデックス、セル、間接、& rank.avgの組み合わせですと推測しています。これまでのところ、最初の部分を試してみましたが、cell( "col"、(index(match)))を取得してその列の文字値を返すことはできません。ここ

A  B  C   D 
1 Part Rank(C) 11/28/17 12/04/17 
2 Part A 1  $100  $100  
3 Part B 2  $50  $125  
4 Part C 3  $25  $200  

列Bは、Cが値11に行くハードコードから決定される列C.カラムから部品のランク(A、B、C)を決定されたランクの式を有する例であります/ 28/17。

私は= CELL( "address"、INDEX(C1:D1,1、MATCH(43067、C1:D1,0)))でスタックしています。これは、私が$ CまたはCだけを必要とするときに$ C $ 1を返します。その後、これを間接関数で使用して、ランク関数を渡すことができます。誰かが数式の隙間を埋めることができたり、簡単な方法でこれを行うことができれば、どんな支援も大いに評価されます。

ニック

答えて

2

はいADDRESSとINDIRECTを取り除き、COUNTIF式に列を入れるだけです。

ADDRESSとINDIRECTはvolatileです。これは、非揮発性であり、あなたがワンステップで何をしたいん非配列数式:

まあ
=COUNTIF(INDEX(C:D,2,MATCH(43067,$C$1:$D$1,0)):INDEX(C:D,1040000,MATCH(43067,$C$1:$D$1,0)),">" & INDEX(C:D,ROW(),MATCH(43067,$C$1:$D$1,0))) + 1 

enter image description here

+0

COUNTIFに日付が含まれているため、ランクが1になっていませんか?私はあなたが行1を除外したいが、正しいランクを得るためにCOUNTIFの結果に1を加えたいと思うだろう –

+0

@Scottここでは助けてくれてありがとう。私はそれを正常に私のファイルで使用するように変更しました!配列は約53列対120列です。私は式を完全に理解しているかどうかはわかりません。しかし、あなたはそれがワンステップ(速い)であり、ファイルサイズは制御不能に膨らんでいません。ランクの式を完全にサイドステップしているように見えますが、それは機能します。いくつかマイナーな奇妙なものがあります(ランク10からランク12にジャンプし、ランク11をスキップします)が、正確であるように見えます。私はこれを思い付くだろうとは思わない。素晴らしいトリック。 – Nicho247

+0

@barryhoudiniはい、あなたは正しいです。私は修正します。私は怠け者だった。 –

0

あなたはAddressSubstituteと空想得ることができるだけの列文字を取得するには:

=SUBSTITUTE(ADDRESS(1,MATCH(43067, C1:D1,0)+2,4), "1", "") 

アドレスは、列と行を取り込んで、セルを出してくれる。だから我々は常に行1を参照し、アドレスから返される列(+2はMatchでCから開始しているため)を参照します。次に、返されたセルアドレスの1を、カラム文字で何も残さずに置き換えます。

0

、あなたの式はC1の形でセル参照を返す場合、あなたがして、それをラップすることができます:

=CHAR(64+COLUMN(C1)) 

C1を数式で変更してください。

関連する問題