2016-06-29 6 views
1

Excelテーブルの列に対してデータ検証を作成しようとしています。検証では、テーブルの別の列を参照する必要があります。Excelデータ検証で構造化テーブル参照を使用する方法

2つの列「f1」と「f2」があります。各列には「Y」または「N」のいずれかを含めることができます。細かい

使用して、セルのアドレッシング作品:

enter image description here

私の質問です:どのように構造化されたテーブルには、アドレス指定検証-式を作成するには?

構造化参照の優れた概要:列「F2」にhttp://peltiertech.com/structured-referencing-excel-tables/

所望の検証がある:次のテーブルに入っ上方

=Table1[f1]&Table1[f2]<>"YN" 

この写真は、表および検証式を示し、期待示します検証結果:

Pic1

IはDに上記式を添加ata Validation - > Custom、 "f2"のセル。これは失敗します。有効なエントリ(つまり、その式がTrueと評価されるエントリ)を拒否します。

次に、この投稿に基づいてその数式を使用して定義された名前を作成し、その名前をカスタム検証として使用しようとしました。それも失敗します。 https://superuser.com/a/480660

その後、私はこの記事に基づいて、私の定義名、間接使用してみました: http://www.get-digital-help.com/2012/10/15/how-to-use-a-table-name-in-data-validation-lists-and-conditional-formatting-formulas/

enter image description here

enter image description here

しかし、有効なエントリはまだ拒否取得。

これを行う方法?

なぜ、構造化参照が検証式で失敗するのは、TableName [FieldName]が現在の行だけでなく列全体を評価するためです。そのため、検証式を現在の行だけに制限する方法を模索しています。

私はこれまでのところ、これらの方法を考えた:

私は構造化参照して、現在の行が@で識別されていることと思います。

ので、式は次のようになります。実際にシートに動作しますが、まだ検証-式としては動作しません

Table1[@f1] & Table1[@f2]<>"YN" 

または

Table1[[@[f1]] & Table1[@[f2]]<>"YN" 

次は、INDEXを使用して現在の行だけをプルすることでした。式は次のとおりです。

INDEX(Table1[f1] & Table1[f2],1,0) 

また、これは検証式としてではなく、オンシートで動作します。私はこれが有望な方向だと思います!

+0

thx、Ralph、しかし、私は自分自身の検証フォームを構築するのに役立つとは思わない。問題は、式がどのように評価されているかです。あなたの答えはそれに対処していません。 –

+0

私はラルフを理解しています。確かに、私はすべての単一のセルを1つずつ比較するようにVBAを書くことができます。しかし、完全な新しいカスタムフォームを作成するよりも、通常のセルアドレッシングを使用するほうがはるかに簡単で簡単です(私のOPに加えて)。このスレッドは、構造化テーブルアドレッシングを使用してそれを行う方法を尋ねていますか? –

+0

セル参照式が正常に動作しているようです。テーブルに新しい行を追加すると、テストでは「YN」の組み合わせは受け入れられません。 –

答えて

1
  • 解決策は、検証にルックアップリストを使用することです。
  • このソリューションは、実際のアドレス指定を使用し、INDIRECTを必要としません。必要に応じて、シート上で数式を作成し、アドレス自動補完を取得することができます。
  • このソリューションは、構造化テーブル参照を使用します。問題になっているよう
  • 、我々は、ユーザーがいずれかの欄に「Y」または「N」を入力してその中に(「のCol1」とこの答えで「Col2に」という名前の)2列でテーブル・オブジェクトを持っています。問題になっているよう
  • 、我々は標準的なデータ検証の警告を上げるであろう、「Y N」を除くすべての組み合わせを受け入れます。

手順

  1. は、テーブルオブジェクトの外側2つの名前付き範囲を作成し(必要に応じて別個の、隠されたシートにすることができる):
    • rngY
    • rngYN Y :Y、N
  2. 次の定義済みの名前を作成します(注:この式をワークシートに入力しないでください。それだけで定義された名の定義にあります)
    • 「validFmla」:=IF(Table1[@Col1]="Y", rngY, rngYN)
  3. でcol2のデータ・セルに次のデータの検証を作成します。
    • リスト型の検証
    • 出典:=validFmla
    • オプション:チェックを外し、 "セル内プルダウン" 完了
  4. 。 Col1は "N" が含まれて

enter image description here

結果今

  • 、あなたはCol2にに "Y" または "N" を入力することもできます。 Col1は "Y" が含ま
  • は、あなただけのCol2にに "Y" を入力することもできます。それは通常、このソリューションのシートに入力されていないonly--

enter image description here

注、私は説明のため、この画像ではシート上の確認式を示しました。

これはピックリストを使用して動作するのは奇妙ですが、元の質問の式は機能しませんが、Excelは不思議な仕方で動作します。

0

私は、これはあなたが探している正確に何であるかどうかわからないです。 INDIRECT式を使用して、検証時にテーブルを参照できます。

=INDIRECT("TableName[ColumnName]") 

これは、リスト検証が選択されている場合、列のデータに基づいてデータを検証します。

+0

Thxのアイデアは、それは私の目標を達成していません:2列の連結を確認する。これらのfmlaは正解ですが、バリデーションのために働かないようです: '= INDIRECT(" Table1 [@ Col1] ")&INDIRECT(" Table1 [@ Col2] ")<>" YN "' and '= Table1 [ @Col1]&Table1 [@Col2] <> "YN" '' @ 'が現在の行を指しているので、セルに入力すると自動補完されるので、 '' INDIRECT '(これが望ましい)。同じテーブルの別の列にこれらを入力すると、私は 'TRUE'と' FALSE'を期待します。 –

+0

注意: '= INDIRECT(" Table1 [@ Col1] ")&INDIRECT(" Table1 [@ Col2] ")<>" YN "'を定義名に入れて、定義名を検証に入れます必要に応じて、検証によって「YN」条件が拒否されることはありません。 –

+0

解決済み、plz私の答えを見てください:) –

関連する問題