痔になりやすい生活習慣とは?

データの昇順・降順方法として、メニューから「データ」→「並べ替え」とする方法がありますが、関数で同じことを実現できるものはあるのでしょうか?(例)A列に上から、「5、3、1、4、2」と並んでいるときに、(関数を入力した)B列上から「1、2、3、4、5」と表示する。

A 回答 (3件)

A1からA5までデータが入っているものとして、


作業用としてC列に1行目から順位(1,2,3、・・・・)を作っておき、セルB1に
=LARGE($A$1:$A$5,C1)
とし、下の行までコピーします。
    • good
    • 4

SAKURAMYLOVE さんのは逆になりますね。



=SMALL(A$1:A$5,ROW())
下方向にオートフィルコピー

でどうでしょう。文字列でやる場合は PHONETICと
CODE で頭文字のコード番号を別列に表示すればで
きなくはないと思います。
    • good
    • 2

(デ-タ)


A1:A5
5、3、1、4、2
(関数式)
B1に=INDEX($A$1:$A$5,MATCH(ROW(),$A$1:$A$5,0),0)
といれB2からB5に複写する。
$の付いているところは、重要ですからもらさないこと。
データが2列あるときはC列に入れ、D列は
=INDEX($A$1:$A$5,MATCH(ROW(),$A$1:$A$5,0),1)
と最後の引数を変えて行きます。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル SMALL の機能を文字列でもできないか

数値に対し小さいほうからn番目というのは
SMALLで出来ますが、2文字以上(最低15文字くらい
まで)の文字列に対しそれを行う方法は無いでしょうか?

なんらかの式の組み合わせで出来ないものでしょうか?

要するに名前(よみがな)などを昇順(または降順)に読み込み
ソートさせた状態で別表に表示させたいのですが
文字1文字ならCODEで何とかなるのですが
2文字以上となると・・・

VB等のプログラムは一切使わず関数の駆使でなんとかならない
ものでしょうか?

Aベストアンサー

◆先程の回答で、順位を表示させなくてもできます
   A       B
1  ああああ  ああ
2  ああ     あああ
3  あい     ああああ
4  あう     あい
5  あいあい  あいあい
6  いいい   あう
7  あああ   いいい

B1=IF(COUNTA(A:$A)<ROW(),"",INDEX(A:A,MATCH(ROW(),INDEX(COUNTIF($A$1:$A$10,"<="&$A$1:$A$10),),)))
★下にコピー

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QEXCEL関数 空白セルを詰める関数

図1の表を図2のようにオートフィルタを使わず表示させる関数で下記を見つけましたが、実際使うときには、番地がA1からの位置ではなくAA60ぐらいの位置でこの関数を実行すると表示されません。
どの部分をその番地にあわせるとよいでしょうか?

<図1>
    A     B
1   あいう
2         えお
3   かきく
4         けこ
5   さしす

<図2>各行の空白セルを詰めて表示させる
    A     B    
10  あいう   えお
11  かきく   けこ
12  さしす
13
14

【関数】

A10: =IF(ROW(A1)>COUNTA(A$1:A$5),"",INDEX(A$1:A$5,SMALL(IF(A$1:A$5<>"",ROW($A$1:$A$5),""),ROW(A1))))

Ctrl + Shift + Enterキーで式を確定します。

右と下にコピーします。

Aベストアンサー

元データがA60から始まっているとすると,

A10に
=IF(ROW(A1)>COUNTA(A$60:A$65),"",INDEX(A$60:A$65,SMALL(IF(A$60:A$65<>"",ROW($A$1:$A$6),""),ROW(A1))))
をコントロールキーとシフトキーを押しながらEnter,下にコピー,右にコピー と直す格好になりますね。




#好みの問題ですが
=IF(ROW(A1)>COUNTA(A$60:A$65),"",INDEX(A:A,SMALL(IF(A$60:A$65<>"",ROW(A$60:A$65),""),ROW(A1))))
をCtrl+Shift+Enterの方が,判りやすいと思います。

QExcel関数 指定文字を抽出し、昇順に並び替えをしたいのですが

皆様はじめまして。関数初心者です。
以下の処理を行うには、どのような関数を用いれば良いでしょうか。

【例】
A B C
1 書名1 1111 1000
2 書名2 1111-A 1200
3 書名3 1111-B 1200
4 書名4 1112 1300
5 書名5 1112-A 1500
6 書名6 1112-B 1500

列Bの中から、-Bのデータを抜き出し、更にBを基準に昇順並び替え

【結果】
A B C
3 書名3 1111-B 1200
6 書名6 1112-B 1500

皆様のお知恵を拝借できますでしょうか。
どうぞ宜しくお願いいたします。

Aベストアンサー

すみません 質問からズレて関数未使用ですが
オートフィルタを使い、列Bで「-B」で終わる を選ぶ
できた表をコピーして並び替え

 

QVLOOKUP関数を使用時、検索する値は昇順に並べ替える必要がありますか。

VLOOKUP関数使用時、検索する値を昇順に並べ替えておかないと、正しい値を返す事が出来ないのでしょうか?

下記条件のそれぞれについて御指導お願い致します。

1.参照元も参照先も同じワークシートに存在する場合。
2.参照元と参照先が同じブックに存在する場合。
3.参照元と参照先が異なるブックに存在する場合。

特に3について並べ替えなくても処理できる方法があれば
併せて御指導お願い致します。

Aベストアンサー

答えは、NOでもあり、YESでもあります。
というのは第4引数がTRUEとFALSEに指定する型があり
  FALSE型  並べる必要なし
  TRUE型   並べる必要あり
だからです。今までのOKWAVEの回答者の中にもTRUE型において、間違った(質問のような)解答がありました。
TRUE型は区画範囲で割り出すのだから、順位並んでいないと、
FROMーTOがいってしまいますが、1つで済ましている以上、順でないと困るわけです。
FALSEは個別のものを探すので、順序は問題にしません。
1.2.3で質問の点に差があると考える必要はありません。
前半と後半は聞いていることが違います。後半はシートやブックを
エクセルでどう表現しているかの問題です。!や[]などで表すやり方を調べてください。

QExcel MATCH関数で検索範囲内に同じ値の検索値が複数ある場合

MATCH関数で、検索した値が複数ある場合に1つしか出なくて困っています。
(例)
   A B C D
1 年月日 種類 番号 備考
2 4月1日 肉類 1
3 4月2日 野菜 2
4 4月3日 肉類 1
5 4月4日 果物 2
6 4月5日 野菜 1
7 4月6日 果物 3
8 4月7日 果物 2
9 4月8日 肉類 1

この表で、D9の備考の欄に「種類:肉類、番号:1」と同じものがあった時の日付を、新しい日付で取り出したいのです。

INDEX(A2:A8,(MATCH(B9,B2:B8,0)+MATCH(C9,C2:C8,0))/2)
としたのですが、本当は4月3日を取り出したいのですが、4月1日が出てきます。
どのようにしたら良いでしょうか?
Excel2003です。
よろしくお願いします。

Aベストアンサー

MATCH関数を使用しませんが、D9の書式を日付にして、
=MAX((A2:A8)*(C2:C8=1)*(B2:B8="肉類"))
と、入力してShift+Ctrl+Enterキーで入力完了してみてください(配列式になります)。

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

QEXCEL関数:重複した値がある並び替えについて

重複した値がある表を、関数で並び替えることは可能でしょうか?

EXCELの棒グラフが常に昇順になるように、LARGE関数とINDEX関数を使い表を作成しました。

並び替えたい列(F3)に =LARGE($C$2:$C$5,ROW(A1))
並び替えを反映させたい列に(E3)に =INDEX($B$2:$C$5,MATCH($F2,$C$2:$C$5,0),1)
下までオートフィル

概ね並び替え出来たのですが、重複した値についてはE列まで同じ値になってしまいます。

添付図でいいますと、福岡をE3もしくはE4に反映させたいです。
同じ値については、順不同で構いません。

上記を関数で行うことは可能でしょうか?
ご教示いただけますと幸いです。

Aベストアンサー

こんにちは!

一気に!となるとかなり面倒なので、一案です。
↓の画像のように作業用の列を設けてみてはどうでしょうか?

作業列D2セルに
=IF(C2="","",COUNTIF(C:C,">"&C2)+COUNTIF(C$2:C2,C2))
という数式を入れこれ以上データはない!という位まで下へフィル&コピー!

E2セルに
=IFERROR(INDEX(B:B,MATCH(SMALL($D:$D,ROW(A1)),$D:$D,0)),"")

という数式を入れ、列・行方向にフィル&コピーしています。

※ 作業列が目障りであれば、遠く離れた列にするか
非表示にしてください。m(_ _)m

Q【Excel】 INDEX ,MATCH でいいのか。該当が複数ある場合

項目の検索で行き詰まっています。

A1 から A30 に名前
B1 から B30 に得点
が入力されています。
B31 に最高点を表示するのは、MAX 関数でできました。

B32 にその最高点をとった人物が誰かを表示するのに
=INDEX($A$1:$A$30,MATCH($B$31,$B$1:$B$30),1)
と入力したら、
該当者が1人しかいない時は問題ないのですが、複数いる場合でも1人しか表示されません。
該当が複数ある場合の出し方は他に方法があるのでしょうか?

どなたか力を貸してください。
よろしくお願いします。

Aベストアンサー

誰が最高点なのか確かめるだけであれば、
#1さんのご提案されたオートフィルタが恐らく最短ですね。

ただ、ご質問の例をみますと、
やはり特定のセルに値を返す必要があるのではないかとも思われます。
その場合、#2さんがご提案されたように作業列を使って引くのが順当な手順かと思います。

さて。
たまたまつい先日似た質問にお答えしたので、
正直あまりお奨めはしないのですが、「一発関数回答」を。

B32セル:
 =IF(ROW()-ROW(B$31)>COUNTIF($B$1:$B$30,B$31),"",INDEX($A$1:$A$30,MATCH(LARGE(($B$1:$B$30=B$31)/ROW($B$1:$B$30),ROW()-ROW(B$31)),1/ROW($B$1:$B$30),0)))

を配列数式として入力し下方に十分な数だけフィル。(Excel2003で動作確認済)
※通常の数式は、数式を入力した後Enterキーで確定しますが、
 これは配列数式なので、CtrlとShiftを押しながらEnterで確定してください。

数式中に、B$31,$A$1:$A$30,$B$1:$B$30の3種類の参照が複数回登場しますが、
いずれも質問文の数式と同様のニュアンスで考えていただいて結構です。
位置が変わる場合はそれぞれ置き換えてください。
(ただし、最高点のセルの直下に、縦に並べて名前を表示することを想定しています)

数式の意味内容については、やや手前味噌の感もありますが、
先日した回答のURLを挙げておきますのでご参考ください。
http://oshiete1.goo.ne.jp/qa3328660.html
(このケースでは行列(縦横)が逆になっています)

誰が最高点なのか確かめるだけであれば、
#1さんのご提案されたオートフィルタが恐らく最短ですね。

ただ、ご質問の例をみますと、
やはり特定のセルに値を返す必要があるのではないかとも思われます。
その場合、#2さんがご提案されたように作業列を使って引くのが順当な手順かと思います。

さて。
たまたまつい先日似た質問にお答えしたので、
正直あまりお奨めはしないのですが、「一発関数回答」を。

B32セル:
 =IF(ROW()-ROW(B$31)>COUNTIF($B$1:$B$30,B$31),"",INDEX($A$1:$A$30,MATCH(LA...続きを読む

QEXCEL 数式・関数でソートしたい

数式・関数でソートする方法を教えてください。

A列に日付、B列に品名、C列に個数が入ったSheet1があります。
これを日付順にソートしたSheet2をつくりたいと思っています。

Smallでやろうと思ったのですが、同じ日付が何回もでてくるために、うまくいきませんでした。

よろしくお願いします。

Aベストアンサー

こんばんは。

昨日のご質問にもお答えしたものです。
これも同じ考えた方でできますよ。

■作業列を使う方法です。
作業列はどの列を使用してもかまいません。
ここでは例として Sheet1の J列を使います。

A列の日付が 2行目から始まっているとすれば、
Sheet1の J2に↓( J列の表示形式は 「標準」 のままにしておいてください)
----------------------------
=IF(A2="","",A2*10000+ROW())
----------------------------
◆上の数式を、A列のデータ最終行までコピーしてください。
今後もデータが増えるのなら、予想される最大行までコピーしておいてください。
( 最大500件だと思えば、J500 までコピー)
3.85E+08 ←のような感じで表示されても気にしないでください。
列幅を広げればちゃんと表示されます。 
作業列が目障りなら非表示にしてください。

Sheet2 の A2に↓
----------------------------------------------
=IF(COUNT(Sheet1!$J:$J)<ROW(A1),"",INDEX(Sheet1!$A:$C,MATCH(SMALL(Sheet1!$J:$J,ROW(A1)),Sheet1!$J:$J,0),COLUMN(A1)))
----------------------------------------------
作業列を J列と仮定しています。
J列以外の列を作業列に使う場合は、数式の $J:$J (3ヶ所)をその列記号に変更してください。
絶対参照($)にしているところは必ず絶対参照にしておいてください。
ROW(A1)、COLUMN(A1) の A1はそのままにしておいてください。
◆この数式を、そのまま右にC2までコピー
そのまま(A2~C2が選択された状態で)下に、Sheet1 のデータ件数分コピーしてください。
今後もSheet1のデータが増えつづけるのなら、予想される最大行までコピーしておいてください。
A列の表示形式を「日付」、B・C列の表示形式を「標準」にしてください。
  ◇
ROW(A1)、COLUMN(A1) の意味については、昨日のご質問の補足にお答えしておきましたので、そちらをご覧ください。

こんばんは。

昨日のご質問にもお答えしたものです。
これも同じ考えた方でできますよ。

■作業列を使う方法です。
作業列はどの列を使用してもかまいません。
ここでは例として Sheet1の J列を使います。

A列の日付が 2行目から始まっているとすれば、
Sheet1の J2に↓( J列の表示形式は 「標準」 のままにしておいてください)
----------------------------
=IF(A2="","",A2*10000+ROW())
----------------------------
◆上の数式を、A列のデータ最終行までコピーしてください。
今後もデータ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング