【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

[ALT]+[↓]で得られる結果を返す関数について

こんばんは。よろしくお願いします。

[ALT]+[↓]で得られる結果(直上までの入力実績を踏まえたデータ内訳)を取得する関数はありますか。

=INDEX(質問関数,1)
=INDEX(質問関数,2)
=INDEX(質問関数,3)
=INDEX(質問関数,:)
=INDEX(質問関数,n)

などのようにして、一つ一つ取り出すことを画策しております。

先人のお知恵を賜りたく、どうかよろしくお願い申し上げます。

「[ALT]+[↓]で得られる結果を返す関」の質問画像

A 回答 (3件)

>[ALT]+[↓]で得られる結果(直上までの入力実績を踏まえたデータ内訳)を取得する関数はありますか。



>=INDEX(質問関数,1)

上記の数式の意味が良くわからないところがありますが、B2セルからB9セルに入力されているデータで重複のないデータを表示したいなら、たとえばC2セルに以下の式を入力して下方向にオートフィルします。

=INDEX($B:$B,SMALL(INDEX((MATCH($B$2:$B$9&"",$B$2:$B$9&"",)<>ROW($B$2:$B$9)-1)*100+ROW($B$2:$B$9),),ROW(B1)))&""

上記の回答がご質問の趣旨と違う場合は、目的を含めてどのセルにどのような結果を表示させたいのか具体的に例示してください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。ご回答の内容が今回の問題解決に直結したため、ベストアンサーとさせていただきます。

お礼日時:2010/06/01 23:10

B10セルでB2からB9の範囲にあるデータでダブりのない形で表示がされ、それらのうちからどれかを選択することができるようにすればよいでしょう。


そのためには例えばH2セルに次の式を入力して下方にオートフィルドラッグします。

=INDEX($B:$B,SMALL(INDEX((MATCH($B$2:$B$9&"",$B$2:$B$9&"",)<>ROW($B$2:$B$9)-1)*100+ROW($B$2:$B$9),),ROW(B1)))&""

その後にB10セルを選択してからエクセル2007でしたら「データ」タブから「データの入力規則」を、エクセル2003などでしたら「データ」メニューから「入力規則」をクリックします。
表示の画面で入力値の種類では「リスト」を選択し、元の値には =H$2:H$9 のように入力してOKします。
これでB10セルを選択することで▼が表示されますのでそこから目的のデータを選択することができます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2010/06/01 23:08

いいえ。

そういう関数はありませんので,定番の数式にもう一工夫して可変範囲を取得させて,
=IF(ROW(A1)>ROUND(SUMPRODUCT(1/COUNTIF(OFFSET($A$2,0,0,COUNTA(A:A),1),OFFSET($A$2,0,0,COUNTA(A:A),1))),0),"",INDEX(A:A,SMALL(IF(ROW(OFFSET($A$2,0,0,COUNTA(A:A),1))=MATCH(OFFSET($A$2,0,0,COUNTA(A:A),1),A:A,0),ROW(OFFSET($A$2,0,0,COUNTA(A:A),1))),ROW(A1))))
をコントロールキーとシフトキーを押しながらEnterで入力し,下向けにつるつるっとコピーして配置しておくような使い方が出来ます。


#計算の説明はキリがないので割愛しますが,Excel2002以降をご利用なら「数式の検証」(2002,2003はツールメニューのワークシート分析,2007では数式タブ)を使って計算過程をトレースして,マスターしてください。


あるいはこんな数式はとてもやってられんと納得したなら,目的のデータの隣に作業列を丁寧に配置して,ごく簡単な数式だけでも十分に目的は達成できます。

例:
A列 B列
1 DATA1
2 DATA2
  DATA2
3 DATA3
4 DATA4
  DATA4
5 DATA5
↑ 
=IF(ROW()=MATCH(B1,B:B,0),ROW(),"") (←上述式で使ってるのと同じロジックです)

E列 F列
1 DATA1
2 DATA2
3 DATA3
4 DATA4
5 DATA5
↑ ↑目的のデータ配列なので,INDEX関数で好きに取ってください。
↑ =IF(E1="","",VLOOKUP(E1,A:B,2))
ただの数字の連番,あるいは=IF(ROW()>MAX(A:A),"",ROW())
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2010/06/01 23:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!