0

時間の経過とともにより多くの値が追加されるデータの列があります。ドロップダウンオプションが列の現在の内容を反映するように、この列の値を別のワークシートのリスト検証に使用したいと思います。ListColumn次の式を使用して名前付き範囲を作成してみました。

=ADDRESS(3,12,1,1,"DataSource")&":"&ADDRESS(COUNTA('DataSource'!$L:$L),12,1,1,"DataSource") 

セルの検証を追加しようとすると、[許可:'リスト]を選択=ListColumnして数式ボックスに入力すると、次のエラーメッセージが表示されます。

The list source must be a delimited list, or a reference to a single row or column.

数式全体をでラップしようとしINDIRECT()ましたが、名前マネージャー画面でエラーは生成されませんでしたが、検証を追加しようとすると、次のエラーメッセージが表示されました。

The Source currently evaluates to an error.  Do you want to continue?

ここで何が問題なのかわかりません。両方のADDRESS()呼び出しの2番目のパラメーターは同じであるため、範囲アドレスは単一の列を参照する必要があります。探している動的リスト検証を設定するにはどうすればよいですか?

編集:これをデバッグすると、奇妙な動作が発生します。を使用してListColumnを選択しようとすると、実行時エラーが発生し続けますRange("ListColumn").Select。メッセージは「オブジェクト'_Global'のメソッド'Range'が失敗しました。」です。

入力すると、期待値である=ListColumn:が返されます。'DataSource'!$L$3:'DataSource'!$L$65

また、数式を入力する=COUNTA(ListColumn)と「1」が返されますが、数式を入力する=COUNTA('DataSource'!$L$3:'DataSource'!$L$65)と正しい値の「63」が返されます。 =COUNTA(INDIRECT(ListColumn))また、「1」を返します。

4

1 に答える 1

2

問題は、2番目のブロックDataSourceのテキストシート名として含まれている可能性があると思います。ADDRESS上記の手順を実行したときとまったく同じ動作が得られますが、これで機能するようです。

=INDIRECT(ADDRESS(3,12,1,1,"DataSource")&":"&ADDRESS(COUNTA(DataSource!$L:$L),12,1,1))

次に、上記で行ったことを正確に実行して、ドロップダウンで使用できます。私の最善の仮定は、アドレスの最初の部分でシートをすでに定義しているので、2番目の部分でそれを提供する必要がないということです(そうするとエラーが発生します)。プログラムの観点から考えると、それは理にかなっています(私は:))。複数のシートにわたる範囲を参照することは困難/不可能であるため、構文では2番目のシートを参照できない可能性があります。コロンの後に指定されます(同じ場合でも)。それは推測ですが(おそらく間違っている)、うまくいけば解決策はうまくいきます:)

ここに画像の説明を入力してください ここに画像の説明を入力してください

于 2012-10-04T00:57:10.453 に答える