2017-01-22 6 views
0

私は3つの異なるシートがあり、それぞれA列 "Price(buy)"とBカラム "Price(sell)"と記された列を含んでいます。カラム内のすべての行に関数を展開するときに問題がある

"Price(sell)"列を関数で計算したいが、追加する新しい行に展開する方法が見つからない。

私はArrayFormulaで試しましたが、関数に新しい行を送ることができず、毎回同じ結果が返されるだけです。以下は私が試したArrayFormulaの1つです。

=ArrayFormula(iferror(if(A:A="";;if(row(B:B)=1;"Price (sell)";if(isblank(A:A)=False;sell_price($A2)))))) 

しかし、これは唯一、それがどのように動作するかをカラムA.

例にかかわらず、価格の各行に20を返します。

  1. は、新しい行を作成します。
  2. 「価格(購入)」セルに価格を入力します(例:10)。
  3. この機能は自動的に処理され、回答は同じ行の「価格(売り)」列に表示されます。
  4. 「価格(販売)は、」そう、これは単なる例示のためで異なるだろう20

機能を表示する必要があります。

この3つの異なるシートすべてでこの作業を行い、自動的に3つのシートのいずれかに追加される新しい行に展開する方法はありますか?この情報は、APIを介してスクリプトから得られます。

+0

「新しい行を作る」と言うときは、新しい行を挿入することを意味するのか、単に次の行に書き始めたらいいですか? –

+0

また、B列のすべてのセルに数式を入れることについて考えましたが、通常は扱うのがやや難しいarrayformulaを使用するのではなく、 –

+0

ああ、新しい行を挿入することは、私が意味していたものです。申し訳ありません。私はBのすべてのセルに数式をつけることを考えましたが、何とかそれを行うことは可能かもしれないと思ったので、スクリプトに追加する必要はありません。 – Shopro

答えて

2

数式に小さなエラーがあるようですが、列全体を参照する代わりに、セル$A2を参照するだけです。 $A2A:Aに変更するとうまくいくはずです。 :)

EDIT: これに補完するために、あなたのsell_price()機能は、現時点では、複数のセルを扱うことができないかのように、それはそうです。あなたができることは、あなたが入力した範囲内のすべてのセルをループし、それらのラッパー関数を計算するラッパー関数を書くことです。以下の例。

function wrapper(values) { 

    // creates an empty array 
    var returnValue = []; 

    // loops over every value in values in order 
    for (var index = 0; index < values.length; index = index + 1) { 

    // applies the formula 
    returnValue[index] = sell_price(values[index][0]); 
    } 

    // outputs the scores of all the cells 
    return returnValue; 
} 

function sell_price(value) { 
    return value + 10; 
} 

次に、あなたは単にあなたのスプレッドシートの代わりにsell_price()のラッパー関数を呼び出すことができ、それがwrapper(A:A)すなわち、動作するはずです。

+0

あなたの提案をありがとうが、残念ながらそれは動作していないようです。購入価格を同じ行に引くのではなく、列全体を引っ張ってすべての行に追加します。 10,10,10,10などのように見える – Shopro

+0

うーん...他の機能を使用しているときはうまくいく。あなたは 'sell_price(A:A)'を呼び出すのではなく、自分でそれを試すことができます。たとえば 'mod(A:A、7)'を呼び出すことができます。たぶん、入力として全体の列を取ることができる関数のラッパー関数を作成し、それをループして答えの列を返しますか? –

+0

うーん、私はそれが動作するように思わない。 使用する場合: '' = ArrayFormula(if(A:A = A)= False(if(行B:B)= 1; ; sell_price($ A2))))))))))) '' 関数: ''関数sell_price(price){ リターン価格+10; } '' A2をA5に1,2,3,4で塗りつぶすと、B列のすべてで1,2,3,410となります。 ラッパーは素晴らしく聞こえますが、それは私のスキルをはるかに超えています。 :) – Shopro

関連する問題