2017-05-22 13 views
1

私は音楽を含むExcelプロジェクトに取り組んでいます。私は定数のシートで定義されたすべての異なるノートを持っており、メインシートにスケールを表示したい。これらは、異なる順序の定数の実行です。例えば動的参照の式

:一枚でIが定義

場合 - B - C - D Iを動的最後の要素は、最初にループバックしてリストを埋めることができるようにしたい

を(等最後の要素が最初の要素への参照を持つリスト)。以下の出力例。

Root Scale 

A A - B - C - D 
B B - C - D - A 
C C - D - A - B 
D D - A - B - C 

擬似コードのロジックは

if (lookup == 0) 
    cell value = lookup - num constants defined //loop back around 
else (cell value = lookup value) 

私は動的な全体のものを作るのが大好きです可能であれば

=if constants!A2 = 0, <Loop around and fetch the equivalent Value>, <constants!A2>) 

のようなもので、これを実装しようとした

=if constants!$[Row()][Column()] = 0, <Loop around and fetch the equivalent Value>, <constants!$[Row()][Column()]>) 

文法が間違っているので、仕事は効果的です。私は、スケールの最初の列を考えている

+1

定数はどのように定義されていますか? (同じ列上の)行ごとに1つ、または(同じ行の)列ごとに1つ、または「 - 」で区切られた1つのセルにすべて含まれていますか?最初の2つのオプションのいずれかを使用すると、式が可能です。 –

+0

1つの列に1つずつ。 別のシート上の数式の中でインクリメントを増やすと思ったのですが、これは文字のテキスト(CC#Dなど) – Eogcloud

+1

'offset'がここで助けてくれるものでした。' offset(b1、 0,0,1,8) ' –

答えて

1

は常に、その後(私の場合はC2で始まる)ルート

=IFERROR(INDEX(Sheet2!$A$2:$D$2,MATCH(B2,Sheet2!$A$2:$D$2,0)+1),Sheet2!$A$2) 

と同じである場合、スケールのノート(A、B、 C、D)はsheet2!a2:d2にあります。

したがって、次の音符を順番に取得しようとしますが、失敗した場合は最初の音符に戻ります。

enter image description here

1

剰余演算子MODは、環状回転を支援するために最適です。

下の図では、2行目に定数があります。セルA11以降では、回転を開始する場所(緑色の領域)を入力します。それから私はfollwoing B11の式と黄色の領域でのコピー/貼り付けを入力します。

=INDEX($2:$2,1+MOD(MATCH($A11,$2:$2)+COLUMN(B11)-COLUMN($C11),COUNTA($2:$2))) 

enter image description here

あなたが別のシートにセクションを転送し、セルアドレスを調整し、目の前にConstants!を追加することで可能2:2。数式が定数の数で自動的に調整されることにも注意してください。

+0

私はこの解決策が大好きですが、私はあなたの第2引数に問題があります。 マッチ関数の2番目のパラメータは、別のシートで範囲を参照すると評価されないようです。だから私は行く MATCH($ B $ 4、定数!$ B $ 1:$ M $ 1)2番目の部分は何も評価されず、一致が見つからないので、私はそれを単一のシートでテストし、期待どおりに動作する。 – Eogcloud

+0

@Eogcloud別のシートを参照しているわけではなく、実際に使用しているレイアウトに、私が想定したものとは多分異なる場合があります。だから 'B4'はあなたが最初の定数を入力するセルですか?重要なことに、*生成されたシーケンスで*カウントされるか、またはC4で繰り返されますか? –

関連する問題