2017-09-01 16 views
1

別の変数に基づいて、特定の回数繰り返す名前のリストを作成しようとしています。基本的に、私は次のようしている場合:特定の繰り返しの項目のリストを返すExcel

Column A Column B 
Amy   5 
John   2 
Carl   3 

を結果は次のようになります。

  • エイミー
  • エイミー
  • エイミー
  • エイミー
  • エイミー
  • カール
  • Carl
  • カール私はアルファベット順と明確なリストを取得するには、インデックス・小COUNTIF、メソッドを使用して初期リスト、その後、別の式を構築しています
  • ジョン

  • ジョンは何を判断します各項目が繰り返される回数。私は行の参照でインデックス/オフセットのいくつかの並べ替えを使用する必要があることを知っているが、ちょうどそれを解決するためにそれを得ることはできません。

    リストは動的で毎日変更されるため、毎日手動でリストを再入力すると人為的なエラーや時間が長くなりすぎます(リストは約50個の異なるアイテムで、最後の行の総数は約400です)。結局のところ、リストは数多くのサンプ/プロダクトに使用されます。

    私はこれをVBAでかなり短時間で行うことができますが、このドキュメントのユーザーは常にVBAを信頼するとは限りませんし、マクロを有効にすると動作しなくなる可能性があります。

    ご協力いただきありがとうございます。あなたのテーブルに基づいて

  • +0

    新しいメンバーを作成する。それはオプションですか? – JNevill

    +0

    時々私はそれが本当に欲しいと思っています... – mjohnson

    答えて

    1

    :コラムCで

    +---+------+---+ 
    | | A | B | 
    +---+------+---+ 
    | 1 | Amy | 5 | 
    | 2 | John | 2 | 
    | 3 | Carl | 3 | 
    +---+------+---+ 
    

    がダウンしてちょうど0前にC4で "0" と式=B1+C2コピー固執:

    +---+------+---+----+ 
    | | A | B | C | 
    +---+------+---+----+ 
    | 1 | Amy | 5 | 10 | 
    | 2 | John | 2 | 5 | 
    | 3 | Carl | 3 | 3 | 
    | 4 |  | | 0 | 
    +---+------+---+----+ 
    

    を今、私たちは上限がありますそれぞれの値は、Index()の式を使用してMatch()の式で使用することができます。

    E1の新しい列(IはEを使用しています)では:=INDEX($A$1:$A$3,MATCH(ROW(),$C$1:$C$3,-1),1)とダウンコピー

    +----+------+---+----+--+------+ 
    | | A | B | C | D | E | 
    +----+------+---+----+--+------+ 
    | 1 | Amy | 5 | 10 | | Carl | 
    | 2 | John | 2 | 5 | | Carl | 
    | 3 | Carl | 3 | 3 | | Carl | 
    | 4 |  | | 0 | | John | 
    | 5 |  | | | | John | 
    | 6 |  | | | | Amy | 
    | 7 |  | | | | Amy | 
    | 8 |  | | | | Amy | 
    | 9 |  | | | | Amy | 
    | 10 |  | | | | Amy | 
    +----+------+---+----+--+------+ 
    

    リストは、我々はこれがにある列Cにやっ0のものから逆方向にあるため、その変わり者の後方でありますMatch()の最後のパラメータが-1(より大きい)が正しく機能するようにします。

    これはちょっときれいにすることができますいくつかの調整と想像するが、これは野球場であなたを取得する必要があります。

    私は依然としてマクロを有効にできるユーザーを見つけることができますが、ああ。

    +0

    すごい!どうもありがとうございました!私は正しい順序でそれを得るために少し微調整しました。基本的に列Bを集計し、次に一致部分を= ... MATCH(SUM(B:B) - ROW()、... – mjohnson

    +1

    に調整しました。それはかなり意味があります。私はこの質問を2〜3分であきらめましたが、それは私を悩ませていましたので、私はそれを(後ろに)割ったとき、リファクタリングを危険にさらすことはありません。 – JNevill

    関連する問題