2016-12-21 6 views
0

私の会社が使用する "自動生成"ワークシートを設定しようとしていますが、Excel - リストを複写するための関数が必要です(複合式)

私が必要とするのは、別のリストに再追加するSKUのリストですが、リストが終了すると再び同じ値を取ることができるようになります。これはCSVに変換され、当社のウェブサイトでデータをインポートするために使用されます。

例:

オリジナルリスト

  • アップル
  • バナナ
  • オレンジ
  • ピーチ

別のリストのセルを記入するのにこのリストが必要ですが、同じ値を複製します。下記参照。

新規一覧

  • アップル
  • バナナ
  • オレンジ
  • ピーチ
  • アップル
  • バナナ
  • オレンジ

リストが一度複製されると停止します。リストに5つの項目がある場合は、10項目後に停止する必要があります。リストに8つの項目がある場合は、16の後に停止する必要があります。リストが重複している限り、順序は重要ではありません。

私が試してみましたIFVLOOKUPHLOOKUPCOUNTIFMATCHINDEXが、それらのどれか、私はこれを達成していると考えることができ、それらの任意の組み合わせ。リストの終わりに達すると、リストの先頭から値を取っていきたいだけです。

ありがとうございました!

+0

だから、アイデアを自動的に生成することで、正しく入力した場合 + はあなたが式の周り{}を見るであろう、同時にをENTER SHIFTCTRL + を押すと入力されていますその中の各項目を2回、2回だけ含むリスト? VBAソリューションが受け入れられるのか、それとも避けたいですか? – Werrf

+0

私はVBAを避けるのが好きです。できるだけ余分な作業をする必要があるからです。 VBAは複雑になる傾向があり、その使い方を説明する必要はありません。指定されたセル内で唯一の変更が行われている限り、式は機能します。 – Bschacht

+0

さらに2つのコメントが必要 – Bschacht

答えて

0

この式は、「オリジナルリスト」「新しいリスト」範囲の場所のための柔軟性を提供します。

は、この式を試してみてください:

=T(INDEX(SrcCol, 
-1+SrcRow+ROWS($TrgRow:TrgRow) 
-IF(ROUNDUP(ROWS($TrgRow:TrgRow)/COUNTA(SrcCol),0)=2,COUNTA(SrcCol),0))) 

SrcCol"オリジナルリスト"

SrcRowに位置しているコラムです:行がです「オリジナルリスト」が開始されます

TrgRowは:「結果」リストがある行は

を開始し、式がオリジナルリストを前提としているが、間に空白のセルを持っていません。

はのは B6から始まる オリジナルリストで式を試してみましょう、私たちは 新しいリストD3で開始します。この式を D3に入力し、最後の行までコピーします(つまり、行10):

下記上記式置換:

SrcCol = $B:$BSrcRow = 6TrgRow = 3

=T(INDEX($B:$B, 
-1+6+ROWS($3:3) 
-IF(ROUNDUP(ROWS($3:3)/COUNTA($B:$B),0)=2,COUNTA($B:$B),0))) 

enter image description here

EDIT:

オリジナルリストは、式の結果であり、細胞がブランク値を返した場合は(すなわち= "")、2つのオプションがあります:

  1. このSUMPRODUCT(--($B:$B<>"")*COLUMN($A:$A))でオリジナル式COUNTA($B:$B)を交換しD3もたらす式を入力:

    =T(INDEX($B:$B, 
    -1+6+ROWS($3:3) 
    -IF(ROUNDUP(ROWS($3:3)/ 
    SUMPRODUCT(--($B:$B<>"")*COLUMN($A:$A)),0)=2, 
    SUMPRODUCT(--($B:$B<>"")*COLUMN($A:$A)),0)))` 
    
  2. このSUM(--($B:$B<>""))でオリジナル式COUNTA($B:$B)を交換しD3FormulaArrayとして得られる式を入力します。

    =T(INDEX($B:$B, 
    -1+6+ROWS($3:3) 
    -IF(ROUNDUP(ROWS($3:3)/ 
    SUM(--($B:$B<>"")),0)=2, 
    SUM(--($B:$B<>"")),0))) 
    

FormulaArrays

+0

私は全く理解しませんが、これもうまくいきます。具体的には、式に+1と-6の値がある理由は? Iveは別の問題に遭遇しました。たとえセルに数式があるとしても、空の値を無視するようにこれらの数式を取得する方法です。たとえば、B10の値は空白( "")ですが、セルに数式がある可能性があります。 – Bschacht

+0

数式の結果の編集を空白(例: "") – EEM

+0

と表示してください。それはまさに私が必要とするものです。どうもありがとうございました! – Bschacht

1

興味深い問題である。この、私は解決策を持っていますが、これを行うための、よりエレガントな方法があるかもしれない:

=IF(ROW()-1<=COUNTA($A$2:$A$5),INDEX($A$2:$A$5,ROW()-1),IF(ROW()-1<=(COUNTA($A$2:$A$5)*2),INDEX($A$2:$A$5,ROW()-1-COUNTA($A$2:$A$5)),"")) 

注:

  • をこれは、あなたがしたいリストを想定しています複製する範囲はA2:A5
  • また、コピーする範囲が行2 (したがってROW() - 1)から始まると仮定します。
  • forumlaは、複製するリストの数の2倍を超える行番号を持つセルに空の引用符を残します。私はあなたがVBAを使用する場合を除き、あなたがこの乗り越えることができるとは思わない

私はあなたが「ドンようにあなたが「parameterise」-1 named rangeまたは類似を使用して可能性をお勧めしたいenter image description here

スクリーンショット物事を動かすと-1を変えなければなりません。

+0

.............非常に賢い............ –

+0

私はあなたがこれをいかに早く理解したかに感心します。私は半日を過ごして働かそうとしました。私はあまりにも行に精通していないが、それは私の問題を解決するようだ。ありがとうございました! – Bschacht

+0

私は別の質問をするかもしれません。 'parameterise'と言うとき、-1という値のセルに名前をつけることを意味しますか?または、元のリストの名前を変更するだけですが、式に-1を付けておきます。 – Bschacht

関連する問題