エクセル関数について再質問

このQ&Aのポイント
  • エクセル関数について再質問します。エクセル2007を使用しています。詳細な説明をお願いします。
  • セルに値が入っているエクセルシートで、特定の条件で値を自動的に移動する方法を知りたいです。
  • 優先キーとして設定した値を基準に、降順で別のセルに値を移動する方法を教えてください。
回答を見る
  • ベストアンサー

エクセル関数について再質問

再度質問します。よろしくお願いします。ちなみに、エクセル2007です。 セルA1に10、B1に11、C1に12、D1に13、E1に100、A2に14、B2に15、C2に16、D2に17、E2に200、同様にA3に18、A4に22、E3に300、E4に400と、値が入っています。(この値は、その都度変わります)、そして、セルA10に=A1、B10に=B1、C10に=C1、D10に=D1、E10に=E1、・・・・      D13に=D4,E13に=E4と入力しています。 このとき、10,11,12,13行のE10,E11,E12,E13の値を優先キーとして、降順でセルA20~に10~13行の値だけを自動的に移したいのですが。 今度は分かってもらえましたかね?・・・・・・・ よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 回答No.1とは別の方法として、作業列を使わずに済む、次の様な方法もあります。  まず、A20セルに次の関数を入力して下さい。 =IF(ROWS($20:20)>COUNT($E$10:$E$13),"",IF(INDEX($A$10:$E$13,SUMPRODUCT(ISREF($E$10:$E$13)*(COUNTIF(OFFSET($E$10,,,ROW($E$10:$E$13)-ROW($E$10)+1),LARGE($E$10:$E$13,ROWS($20:20)))<ROWS($20:20)-COUNTIF($E$10:$E$13,">"&LARGE($E$10:$E$13,ROWS($20:20)))))+1,COLUMNS($A:A))="","",INDEX($A$10:$E$13,SUMPRODUCT(ISREF($E$10:$E$13)*(COUNTIF(OFFSET($E$10,,,ROW($E$10:$E$13)-ROW($E$10)+1),LARGE($E$10:$E$13,ROWS($20:20)))<ROWS($20:20)-COUNTIF($E$10:$E$13,">"&LARGE($E$10:$E$13,ROWS($20:20)))))+1,COLUMNS($A:A))))  そして、A20セルをコピーして、A20~E23の範囲に貼り付けて下さい。  以上です。  尚、上記の関数の中で使用されているSUMPRODUCT関数は、繰り返し処理を行う関数であるため、行数が多くなりますと処理が重くなるという短所があります。  10~13行の場合、その中に含まれている行数は4行しかありませんから、SUMPRODUCT関数を使用しても処理が重くなりはしませんが、もし、処理の対象とする行範囲が2000行以上にもなる様な場合には、SUMPRODUCT関数では処理に時間が掛かり過ぎる様になってきますから、注意して下さい。

handenasi
質問者

お礼

私には、大変でしたがなんとか出来ました。 見事に並び替えできるものですね。感動しました。 これで、寝ることができます。 ありがとうございました、・・・・・おやすみなさい!!!!

その他の回答 (1)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 何故、1行目~4行目に入力されているデータと同一のデータを、態々10行目~13行目に表示させてから、並べ替えの元データとして扱うのか解りませんが、取り敢えずその事は横に置いておいておきます。  御質問文内の例の様に、E列に入力されている値は全て数値データであるとしますと、次の様な方法となります。  まず、使用していない列の中の適当な列(ここでは仮にG列とします)を作業列として使用するものとし、その列の10行目のセル(G10セル)に次の関数を入力して下さい。 =IF(ISNUMBER(INDEX($E:$E,ROW())),RANK(INDEX($E:$E,ROW()),$E$10:$E$13,0)*10000000+ROW(),"")  次に、G10セルをコピーして、G11~G13の範囲に貼り付けて下さい。  次に、A20セルに次の関数を入力して下さい。 =IF(ROWS($20:20)>COUNT($G$10:$G$13),"",IF(INDEX($A:$E,MOD(SMALL($G$10:$G$13,ROWS($20:20)),10000000),COLUMNS($A:A))="","",INDEX($A:$E,MOD(SMALL($G$10:$G$13,ROWS($20:20)),10000000),COLUMNS($A:A))))  そして、A20セルをコピーして、A20~E23の範囲に貼り付けて下さい。  以上です。

関連するQ&A

  • エクセル関数のことで困っています。

    今、簡単な表計算の表を作っていますが、先に進まず困っています。 A1~A200のセルに1~200の番号が昇順で入っています。そしてデータとして,B2,C2,D2,E2 に各々a、b、c、dが入っており,,B3,C3,D3,E3 にa1、b1、c1、d1・・・・・・・・・・・・B200,C200,D200,E200にw,x,y,zのようにB,C,D,E列に適当な数が入っています。 そこで、E列の値で昇順  SMALL(D$1:D$200,A1)  に並べ替え、同時にB,C,D,Eの値も返したいのです。つまりエクセルの並べ替え機能を関数で自動で行いたいのです。 今は、関数の、ROW,SUMPRODUCT,COUNT,INDEX,LARGE,COUNTIF,COLUMN,などを使い関数バーに5行ほどになり、処理にとても時間がかかります。 何とか、簡単で早い計算式はないでしょうか。 よろしくおねがいします。

  • エクセル関数について

    エクセルでセルA1に1、B1に2・・・・・Iに、J1に10が入力された表があります。また、A2に1、B2に3、C2に5、D2に7が入力されています。A2からD2を検索してA3に1、C3に1、E3に1、G3に1を入力します。次に、A2からにD2に2,4,6,8、と入力して同様にB3、D3、F3、H3に1が入るようにしたいのです。 このとき、1,3,5,7の値と2,4,6,8、の値が消去されず。またA2からD2に再度異なる数を入力した場合3列の値に1が加算されるようにしたいのですが、教えてください。

  • SUMIFS関数の質問

    エクセルで A列のあたいがE1セルに一致し、B列の値が文字列"00"でないC列の数値を合計したい場合、 これまでエクセル2003の時は =SUMPRODUCT((A2:A15=E1)*(B2:B15<>"00")*C2:C15) のように書いてきました。 これをエクセル2010で、SUMIFS関数にしようと思い =SUMIFS(C:C,A:A,E1,B:B,<>"00") としてみました。 ところが、テストでわずか14行でやってみると答えが違うのです。 わたしのSUMIFS関数の理解があやまっているのでしょうか? 教えてください。 テストに使った2行目から15行はこんな感じです。E1セルには文字列 A があり、 =SUMPRODUCT((A2:A15=E1)*(B2:B15<>"00")*C2:C15)  は27を =SUMIFS(C:C,A:A,E1,B:B,"<>00")  は28を返します。 A 00 1 A 01 2 A 02 3 A 03 4 A 04 5 A 05 6 A 06 7 B 07 8 B 08 9 B 09 10 B 10 11 C 11 12 D 12 13 D 13 14

  • Excel 関数について

    Excel 下記のような場合、どのような関数及び対応したらいいのでしょうか。参考になる、サイトなどありましたら、教えてください。 例 E2に、D2と同じ値のあるセルをA2~C2から探し、同じ値のある、セルの1行上にある数値をE2に返す関数は、あるでしょうか。

  • エクセル関数を教えて下さい。

    エクセルの数式を教えて下さい。三角関数を全く忘れていますのでよろしくお願 いします。 図形とエクセルの表を画像でアップしました。  Aは角度  B/C/Dは長さ   一行目   セルA1に 任意の角度を入力 B1に 任意の長さを入力するとC1には C の長さの値が出るエクセル関数 D1には Dの長さの値が出るエクセル関数  2行目も同じ様に  A2に 角度  C2に長さを 任意に入力すると  B2とD2に 長さが出てくる エクセル関数   3行目も同じ様に  A3に角度 D3に長さを 任意入力すると  B3とC3に 長さが出てくるエクセル関数  4行目  B4とC4に 長さを任意入力すると  A4に角度 D4に長さが出てくる エクセル関数 

  • エクセル関数等で出来ますか?

    エクセルでA行に数値、 B行以降にA行の数値分、値が入力されています。 A B C D E 1 0 2 4 a b f d 3 2 g l 4 1 s A行の数値分、その行以下に行を挿入し、 B行以降の値を入力する方法はないでしょうか?  A B C D E 1 0 2 4 a b f d 3 a 4 b 5 f 6 d 7 2 g l 8 g 9 l 101 s 11s 宜しくお願いします。

  • エクセル関数 VLOOKUPで

    エクセル2007です A列に商品名 B列に価格 C列に税込価格(B1*1.05) の表があります。    A   B  C  |いちご|900|945|  |みかん|300|315|   D1にA列の商品名を選択して入力できるように 入力規則でドロップダウンリストがら選択にしました。 (範囲はA列です) E1には商品名を選択すると税込金額が反映されるようにしたいので、 =IF(D1="","",VLOOKUP(D1,A:C,3,1)) と入力しました。        D   E           D   E 正 |いちご|945|  →  誤 |いちご|315|   D1の商品名と同行の3列目の値を返す…とやりたかったのですが、 別の行の値を返します。(C列の値であることは確かなのですが…) なぜでしょうか? また、テーブルを昇順で表示とあるのですが、優先はどの列でしょうか? A列優先でもD列優先でも値が違います。

  • エクセルの行列方向での並び替え

    エクセルのデータを下記のように並べ替えるのにはどうしたら宜しいのでしょうか?   1  2  3          1  2  3 A 1.23 2.85 1.11    A 2.85 1.23 1.11 B 12.34 15.72 15.57   B 15.72 15.57 12.34 C 16.07 16.99 15.93   C 16.99 16.07 15.93 ・   ・ ・       並び替え→      ・ ・   ・ E 16.94 14.87 13.87           E 16.94 14.87 13.87 上記のように行単位降順の並び替え方法を教えて下さい。 並び替えオプションで列単位として優先されるキー3行については並び替えができますが、データを一括に並び替えしたいのです。  

  • エクセルの関数での質問です

    エクセルの関数での質問です sheet1に A B  C  D  E 1 ○ ○ ○ 1 2 ○ ○ ○ 3 ○ ○ ○ 2 4 ○ ○ ○ みたいな状態からsheet2に A B  C  D  E 1 ○ ○ ○ 1 3 ○ ○ ○ 2 のようにE列の数値順に行を並べることはできますか? エクセル初心者なのでわかりやすく教えていただけると助かります。

  • エクセルの再質問

    セルA1~D1に1ケタの異なる数値が昇順で入っています。この異なる値の並びが20行まで続いていす。 そこでA25に1、B25に3、C25に5、D25に7と入力したとき、1~20行の中で、この値と同じ並び方をしている行(たとえばA10=1,B10=3,C10=5,D10=7)があれば、セルA10,B10、C10,D10に色をつけたいのですが出来るでしょうか? また、条件が2個になれば同じようにできますか? よろしくお願いします。

専門家に質問してみよう