2017-07-09 19 views
1

私は現在の行と行からドロップダウンリストに値を取得しようとしています。私はExcelのVLOOKUP関数を使用しました。スクリーンショットに示すように、Account Type(Column A)上記の現在および行のアカウント名。 言い換えれば、A4の値がASSETの場合、私はドロップダウンリストE4のアカウント名(家、家具、ショップ)を取得したいと思います。Excel現在と前の行から値を取得する

CellRangeAddressList parentRange = new CellRangeAddressList(1, SpreadsheetVersion.EXCEL97.getLastRowIndex(), PARENT_COL,PARENT_COL); 
    DataValidationHelper validationHelper=new HSSFDataValidationHelper((HSSFSheet) chartOfAccountsSheet); 
    DataValidationConstraint parentConstraint=validationHelper.createFormulaListConstraint("VLOOKUP($B2,$A$2:$B"+ SpreadsheetVersion.EXCEL97.getLastRowIndex()+",2,TRUE)"); 
chartOfAccountsSheet.addValidationData(parentValidation); 

enter image description here

+3

この質問は 'apache poi'に二次的に関係しているだけです。最初に 'Excel'のGUIを使って問題を解決しようとしてください。そして、あなたは 'apache poi'コードで使うことができるデータ検証の式を得ます。ヒント: 'VLOOKUP'は値のリストではなく** one **の値を返しています。しかし、データ検証には値のリストが必要です。 –

+0

@AxelRichter任意の適切な値のリストを返す関数ですか? –

答えて

0

あなたはこれを試すことができます。
ダイナミックな名前付き範囲を作成します。
数式 - >名前マネージャ - >新規に移動し、範囲を定義します。これは、最後の非空白行までB2の範囲が作成され

=OFFSET(Sheet1!$B$2,0,0,COUNTA(Sheet1!$B:$B)-1,1) 

:用 使用し、この式を指します。

次に、ドロップダウン先の範囲を強調表示します。
データのvalidatio - > listをクリックし、F3キーを押してリストの名前付き範囲を選択します。
あなたが進むにつれて、範囲が広がり、ドロップダウンリストが項目を選択します。 注:重複は考慮しません。
希望します。

関連する問題