『VLOOKUPではできないのですが・・・』(禁肉マン)    売上表を作っているのですが、A列にRUNK関数で金額による順位をつけました。  ぜんぶで4000行位あります。別のシートに上位30を抽出したいのですが、上から  日付順になっているので、順位の並びは変えられません。順位で抽出すると、順位  が昇(降)順では ないので、VLOOKUPが使えません。何かいい方法がありませんか?     シート1                                      A  B C D E F G H I J K      1 順位 番号 発注 区分 発注者 件名 場所 金額 担当 着手 完了     2  2 1 都  元  A社  ** @@ ¥20  a 18/1 18/2     3 1 2 民 下 B社 ## %% ¥50  b 18/3 18/4                     ・                                       ・                                       ・                       シート2                                      A B C D E F G H I J        1 順位 発注 区分 発注者 件名 場所 金額 担当 着手 完了        2  1                                   3 2                                                     ・                                       ・                                       ・                       シート2に上位30を転記?抽出?したいのです。  宜しくお願いします。 ---- >VLOOKUPが使えません VLOOKUP(検索値,範囲,列番号,検索の型) 「検索の型」を「0」又は「FALSE」にしても、ダメって事ですよね? (Ohagi) ---- データ-->フィルタ-->オートフィルタで順位でトップテンを使うと 上位30データが抽出されると思います。 これをシート2にコピペして並べ替えたら良さそう。 また、同順位が複数あるかないかは関数で処理する時に重要です。 どのようなデータが予想されますか? (茨) ---- =vlookup(row(A1),シート1!$A$1:$K$100,column(A1),0) かな ---- 上はどなたでしょう? 見たことのないような式ですが、これはExcelで実際に使えますか? [式を修正されたようですので、このコメントはなかったことにして読み飛ばしてね] (茨) ---- どこかおかしい かな ---- かなさんでしたか。 てっきり無記名の名無しさんと思ったもので、失礼をしました。 その式はエラーになりませんか? [ここも、かなさんが式を修正されたので読み飛ばしてね] (茨) ---- テストしてみましたが、(テストなので、データは10行位しか入れてません) 下の方が#N/Aになってしまいます。 また、C列の一部だけ#N/Aになってしまいます。 同じ順位がでないようにしてあります。また、オートフィルを使わないで、関数でお願いします。 (禁肉マン) ---- Sheet2で A2=IF(ROW($A1)>30,"",SMALL(Sheet1!$A$2:$A$50,ROW($A1))) と入力して下にフィルドラッグ B2=IF(ROW($A1)>30,"",INDEX(Sheet1!C$2:C$50,SUM(IF(Sheet1!$A$2:$A$50*10^5+ROW($A$1:$A$49) =SMALL(Sheet1!$A$2:$A$50*10^5+ROW($A$1:$A$49),ROW($A1)),ROW($A$1:$A$49),"")))) としてCtrl+Shift+Enterで数式を確定後、必要分右と下にフィルドラッグでどうでしょうか? 上記数式は2行目から50行目までで作成しておりますので、ご自身の表に当てはめて修正してください。 (ROUGE) ---- >同じ順位がでないようにしてあります。 とのことですから、Sheet2のA2に =INDEX(Sheet1!$A$1:$K$24,MATCH(ROW(A1),Sheet1!$A$1:$A$24,0),COLUMN(A1)) でも良さそうに思います。 Sheet1と2で1行目が異なっていますので、 =INDEX(Sheet1!$A$1:$K$24,MATCH(ROW(A1),Sheet1!$A$1:$A$24,0),MATCH(A$1,Sheet1!$A$1:$K$1,0)) に変更。(茨) ---- テストなので、データは10行位しか入れてません)下の方が#N/Aになってしまいます 10行位しか入れてません A列に1〜10まででセットしてますか。 (  ) ---- もしかして、(ROUGE)さんも(茨)さんも順位が30位まであるという条件でしょうか? じつは、工事業種ごとに同じシートがあって、業種によっては10位に満たないのもあります。 お二人の関数は両方とも、10位以下がエラーになりました。 (10位までしかデータを入れてません)どうですか? ---- =vlookup(row(A1),シート1!$A$1:$K$100,column(A1),0) 試されましたか、 変更してありますが、 ---- シート2のA2に入力すると上記と同じ結果になります。 ---- =VLOOKUP(ROW(A1),Sheet1!$A$1:$D$100,COLUMN(A1),0) sheet1 A B C 1 2 6 A い 3 3 B ろ 4 4 C は 5 8 D に 6 5 E ほ 7 7 F え 8 1 G と 9 9 H ち 10 2 I り 11 10 J ぬ sheet2 A B C 1 2 1 G と 3 2 I り 4 3 B ろ 5 4 C は 6 5 E ほ 7 6 A い 8 7 F え 9 8 D に 10 9 H ち 11 10 J ぬ 上記数式結果 (UUU) ---- 数式をどこにいれるのですか?シート2のA2に入れて、 ドラッグすればいいのですか?してみましたが、横にやると、#REF!になります。 半角スペースを ---- シート2のA2に入れて、ドラッグすればいいのですか シート名は確認の事違うと エラーですよ。 UUU ---- シート名はあってます。半角スペースをsenntouni ---- 提示したシート名じゃなくあなたのエクセルシート名ですよ ---- 何がなにやら、わけが分からないので退散します。 と、書いたものの、思い当たるところを付け加えておきます。 エラー処理がしてないことを言っているのでしょうか?(茨) =IF(ISNA(MATCH(ROW(A1),Sheet1!$A$1:$A$24,0)),"", INDEX(Sheet1!$A$1:$K$24,MATCH(ROW(A1),Sheet1!$A$1:$A$24,0),MATCH(A$1,Sheet1!$A$1:$K$1,0))) ----  あってます。 ---- 一度だけコメントさせてください。 ↑上の方は、スレ主の禁肉マンさんだと想像しますが、 HNの記入をして頂いても宜しいでしょうか? 名無しの文章だけですと、何が何やらわからなくなる恐れがあります。   もう一つ、 ←ここに、半角スペースを入れると、フォントも小さくなり改行もされます。   エクセルマイスターより http://www.excel.studio-kazu.jp/mag2/backnumber/mm20040713.html   「#REF!」とは、『セルの参照がおかしい』時などに出るエラーです。 (キリキ)(〃⌒o⌒)b ----  最初の方の(茨)の関数を使ってみます。30位に満たないときに出でくるとおぼしき、#N/A!は、条件書式で処理します。 いろいろ、有り難う御座います。(禁肉マン) ---- Sheet2で A2=IF(ROW($A1)>COUNT(Sheet1!$A:$A),"",SMALL(Sheet1!$A$2:$A$50,ROW($A1))) B2=IF(ROW($A1)>COUNT(Sheet1!$A:$A),"",INDEX(Sheet1!C$2:C$50,SUM(IF(Sheet1!$A$2:$A$50*10^5+ROW($A$1:$A$49) =SMALL(Sheet1!$A$2:$A$50*10^5+ROW($A$1:$A$49),ROW($A1)),ROW($A$1:$A$49),"")))) 数式修正。数式の確定方法は上記と同じです。 (ROUGE)