• ベストアンサー

エクセルの数式を教えて下さい

エクセルでA1:A1000に顧客名がB1:B1000に金額が入っています。F1:F1000に金額の多い順に顧客名を並べます。金額は重複があり、その場合は上の行の顧客が上に来るようにします。作業列を使わない数式を教えて下さい。(例:A5"田中"B5"1000"、A10"鈴木"B10"1000"の時F3"田中"F4"鈴木"としたいのです。) C列からE列にも他の項目があり、それらも金額の多い順や他の項目で、並べ替えようと思います。よろしくお願いします。

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

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

 F1セルに次の数式を入力してから、F1セルをコピーして、F2以下に貼り付けると良いと思います。 =IF(ROWS($1:1)>COUNT($B:$B),"",INDEX($A:$A,SUMPRODUCT(ROW($B$1:$B$1000)*($B$1:$B$1000=LARGE($B:$B,ROWS($1:1)))*(COUNTIF(OFFSET($B$1,,,ROW($B$1:$B$1000)),LARGE($B:$B,ROWS($1:1)))+RANK(LARGE($B:$B,ROWS($1:1)),$B:$B)-1=ROWS($1:1)))))  尚、表の行数が増え続ける等の理由で、1000行以内に収まらなくなる可能性が高い場合には、数式中の $B$1:$B$1000 の部分を全て OFFSET($B$1,,,MATCH(99^9,$B:$B)) に置換して、 =IF(ROWS($1:1)>COUNT($B:$B),"",INDEX($A:$A,SUMPRODUCT(ROW(OFFSET($B$1,,,MATCH(99^9,$B:$B)))*(OFFSET($B$1,,,MATCH(99^9,$B:$B))=LARGE($B:$B,ROWS($1:1)))*(COUNTIF(OFFSET($B$1,,,ROW(OFFSET($B$1,,,MATCH(99^9,$B:$B)))),LARGE($B:$B,ROWS($1:1)))+RANK(LARGE($B:$B,ROWS($1:1)),$B:$B)-1=ROWS($1:1))))) という数式にすると、行数が増えても、数式を一々変更する必要が無くなります。  因みに、金額の値自体を、多い順番に並べる数式は、以下の通りです。 =IF(ROWS($1:1)>COUNT($B:$B),"",LARGE($B:$B,ROWS($1:1)))

YB_YB_YB
質問者

お礼

kagakusukiさん、ありがとうございました。うまくいきました。他のところでも使いたいと思います。本当にありがとうございました。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! >作業列を使わない数式を教えて下さい・・・ とあるのですが作業列なしではかなり難しいと思います。 (できる方法があればごめんなさい。) そこで一つの案でご希望の方法とは異なりますが、G列に金額の多い順に金額を表示させます。 G1セルは =LARGE($B$1:$B$1000,ROW(A1)) F1セルは =INDEX($A$1:$A$1000,SMALL(IF($B$1:$B$1000=G1,ROW($A$1:$A$1000)),COUNTIF($G$1:G1,G1))) F1セルについては配列数式になってしまいますので、この画面からF1セルにコピー&ペーストしただけではちゃんと表示されません。 貼り付け後、数式バー内で一度クリック、編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! (どちらのセルもエラー処理はしていません) 最後にF1・G1セルを範囲指定しG1セルのフィルハンドルで下へコピー! これでF列に金額の多い順に名前が表示されます。 尚、このデータのままソートを行ってもF・G列は数式が入っているだけなので全く変化しません。 F・G列も他の列と同じように並び替えを行いたい場合は F・G列(G列必要ないので削除しても構いません)を範囲指定 → コピー → F1セルを選択 →  右クリック → 「形式を選択して貼り付け」を選択 → 「値」にチェック → OK その後ソートを行えばF列も一緒にソートされます。 以上、長々と書きましたが的外れならごめんなさいね。m(__)m

YB_YB_YB
質問者

お礼

tom04さん、ありがとうございました。kagakusukiさんの数式でできました。

関連するQ&A

  • excelでのシート同士をつなげる数式について

    どのような数式をたてればよいかわからず、質問させて頂きます。 現状、シート1とシート2にそれぞれ以下のような名前とコードのデータが300件ほどあります。     A     B   1  鈴木   0011 2  田中   0203 3  大田   0365 シート1ではA列をあいうえお順で並べ替え、4つのグループにわけセルを4色で塗りわけました。 今度シート2について、Bを数字順に並び替えました。 ここで、シート1とおなじグループ4色に色塗りをしたいのですが、シート1の色塗りしたデータを、数式をつかってシート2に反映させる方法はありますでしょうか? ちなみに、色塗りでなく文字の色を変えるだけでも構いません。よろしくお願いします。

  • エクセル 数式おしえてください!

    数式がわからないので教えてください。 店舗のシフト作成に使いたいと思っています。 エクセルシート A  B   C   D  E 1  小林 田中 鈴木 森 2 1 A   B     A   B 3 2 B  A    A   A 4 3 A  B   A   A (ちょっとずれてますが・・) A列には日付、 1行目には社員名称が入っている、と考えてください。 別のシートでも同シートの別箇所でもいいのですが、 【○日の△シフトの社員は誰か】 ・・というのを表示できる数式はあるでしょうか??? 例:1日のAシフトは 小林 鈴木・・ と表示できるようになるでしょうか・・・  よろしくお願いいたします。。

  • エクセル:数式の結合

    お世話になります。 A1セルに =B1 A2セルに =B2+C2 A3セルに =B3+C3+D3 ・・・ という式があるとします。 ここにそれぞれのF列の数式を追加したいと思います。 A1セル =B1+(F1の数式) A2セル =B2+C2+(F2の数式) A3セル =B3+C3+D3+(F3の数式) ・・・ となるようにしたいのですがどのようにすればよろしいでしょうか? 結果だけであれば足し合わせればよいのですが数式を書き換えたいというのが希望です。 (最終的にはA列の数式とF列の数式をあわせてひとつの列にしてしまいたいのです) 置換や関数ではどのようにしたらいいかわかりませんでした。 (マクロは手を出したことがありません) 文字列の結合ならCONCANTATE関数でできるのですが中の数式をうまく結合するには・・・ と考えていっても無理でした。 すみませんがお教えください。

  • エクセルの数式についてお尋ねします。

    数千個の単語帳を逐次ソート、整理しています。 =IF(($A9=$A10)*AND($B9=$B10),"★","○ ") A列に英単語とB列にそれに対応する日本語を入力しました(2行目以下)。 数千個の単語帳ですので、重複があります。それで、データ並び替えで整列させたあと、上下の同一セルをチェック、異なれば○、同一であれば★をC列に表示させました。 上は、セルC9の数式です。 今度は、C列を見ていくのですが、これが面倒ですので、セルC1に、その下のC列上の★マークの数を表示させたいのですが、可能でしょうか。 C列(2行目以下)には、上の数式が入っています。 よろしくお願いします。

  • エクセル 条件つきで最小値を求めたいです

    A列に200名を超える生徒の名前が入っています。 B列に計算テストの結果が入っています。 計算テストは何度も行われており、A列に何度も同じ生徒の名前が出てきます。A列に入っている生徒の名前は1000を超えます。 A   B 田中  42 佐藤  48 鈴木  52 佐藤  56 田中  72 鈴木  60 鈴木  23 などです。この中で鈴木君のとった得点の最小値は23点ですが、それを求める数式を知りたいです。 『rankif』とか『minif』みたいな関数があればいいのですが、ないですよね。ちなみに、私が使用しているパソコンはexcel2000です。 他のシートやC列から右に生徒を判別する関数を入れていけば、私の知っている知識でも可能なのですが、関数を多用すると重くなりますし、避けたいです。また、もともとのデータの入力の仕方を変えたらいいのですが、それはできない状態です。 =MIN(IF(A2:A7="鈴木",B2:B7),false) みたいな感じかなと式を立てたのですが、うまくいきません。上の状態で、セルに23と表示されるには、どうすればいいか教えてください。お願い致します。m(_ _)m

  • EXCELで2つのファイルから重複データで抜き出したいです。

    EXCELで2つのファイルから重複データで抜き出したいです。 『A』ファイルという顧客データと『B』ファイルという顧客データがあります。 それぞれ項目は同じで、 A列=顧客コード B列=顧客名 C列=住所   ・   ・   ・ となっています。 『A』ファイルと『B』ファイルそれぞれのファイルには顧客コードに重複はありません。 『A』ファイルと『B』ファイルを比べて 重複データ以外のダブリのないファイルを作成したいです。 よろしくお願いします。

  • エクセルで数式を教えてください。

    エクセルで数式を教えてください。 通帳で考えると分かりやすいです。 A列には入った金額、B列には出て行った金額、C列には差し引き残高です。 データは100行目まで使います。 C列に入れる数式を教えていただきたいです。 また、残高がマイナスのときは、赤文字になると嬉しいです。 いや、-でも嬉しいです。

  • エクセル2007で数式の対象セルを目立たせるには?

    エクセル2007で、A列にあるデータの一件ごとの数値、B列に1日ごとの合計を出しています。 1日何件と決まっていないので、B列に「SUM(A1:A6)」などとしていますが 足し算の対象になっている()内がA7の1件だけだったりA8~A12の4件だったりします。 B列の各数式で、対象先が重複する事はありません。 毎回F2を押すと対象先が枠で囲われるのでわかるのですが、誰が見ても一目でわかるようにしたいと思います。 例えばB列セルの数式に登場するA列のセルを2,3パターン色わけするとしたらどう指定すればいいでしょうか。

  • 23歳の事務をやっているOLです。エクセルでの重複データ抽出についての

    23歳の事務をやっているOLです。エクセルでの重複データ抽出についての質問です。仕事で2つのデータから重複データを抽出しないといけなくなったのですが、エクセルはよくわからないので質問させてください。データには顧客番号と名前が入っています。   A列    B列 1 顧客番号  名前 2 1234   田中太郎 3 2345   鈴木一郎 4 3456   佐藤次郎 5 4567   伊藤三郎 6 5678   吉田四郎 ・ ・ ・ データの形式は2つともこのような感じです。 データAには約1,000件のデータがあり、データBには約300件ほどのデータがあります。 AとBの顧客番号が重複している人の顧客番号と名前を上と同じような感じで別のファイルに表示させたいのですが、どうやってやったらいいのかわかりません>< 助けてください。 どうかよろしくお願いします。

  • エクセルの数式について

    A列の売上金額対し6%との手数料をB列に、なおかつその金額の1の位の1と2は「繰り下がりの0」 3と4は「5」に 6と7は「5」に 8と9は「繰り上がりの0」になる数式をご存知の方ご教授お願いいたします。宜しくおねがいいたします。