80738


ClosedXML(Version: 0.95.4.0)を利用してエクセルのセルからデータを読み込もうとしています。
言語はC#を使っています。ほとんどのセルからはデータ取得ができたのですが、LOOKUP関数を使っているセルの読み込みに失敗します。

エラーです。

[code]

    ClosedXML.Excel.CalcEngine.Exceptions.NameNotRecognizedException: 'The
    identifier `LOOKUP` was not recognised.'
    
[/code]

[この記事](https://github.com/ClosedXML/ClosedXML/wiki/Evaluating-
Formulas)の内容を読みました。ClosedXMLでサポートされていない関数があるようで、`LOOKUP`関数は、サポートされていないようです。

`LOOKUP`関数を使っているセルの値を取得する方法はないのでしょうか？

[code]

    IXLCell cell = worksheet.Cell(rowPosi, colPosi);
    
    switch (cell.DataType)
    {
        case XLDataType.Number:     
            value = cell.GetFormattedString();
            break;
    
        case XLDataType.DateTime:   
            DateTime dt = cell.GetDateTime();
            value = dt.ToString("yyyy-MM-dd");
            break;
    
        case XLDataType.Text:       
            if (cell.CachedValue != null)
            {
                value = cell.CachedValue.ToString();
            }
            else {
                value = cell.Value.ToString();//ここでエラーが発生
            }
            break;
    }
                      
    
[/code]


CC BY-SA 4.0
2021-08-12T03:09:40.410
80735
2021-08-12T04:38:53.297
2021-08-12T03:35:39.770
3060
43941
question
c# excel
LOOKUP関数を使ったセルからその計算結果の値を取得できない


ご自身で確認されたWikiおよび`ClosedXML/Lookup.cs`の[ソースコード](https://github.com/ClosedXML/ClosedXML/blob/78150efbbd4a36d65e95ef3c793f12feb12c1a9c/ClosedXML/Excel/CalcEngine/Functions/Lookup.cs)にあるように未対応のようです。  
[ClosedXMLで使用できる関数・数式](http://pg.w-news.jp/?eid=16)の記事では2016年にはVLOOKUPが使えなかったようですが現在では実装されているので、今後実装されるかもしれません。

下記の回避策が考えられます。

  * EPPlusなど他のライブラリを使用する 
    * バージョン 5.7.3でLOOKUPの値を読めることを確認しました。
  * try-catchで例外処理をして運用でカバーする 
    * 疑似的なLOOKUP関数をC#内で作成し、該当箇所のみ再計算する
    * 該当箇所をVLOOKUPなどに書き換えて運用で回避する
    * 例外部分のみ他のライブラリを併用してカバーする
  * (ハードルは高いですが)実装してプルリクエストする

検証用のEPPlusのコードは[別回答](https://ja.stackoverflow.com/a/72876)から流用しました。


CC BY-SA 4.0
2021-08-12T04:31:44.400
80738
2021-08-12T04:38:53.297
2021-08-12T04:38:53.297
9820
9820
80735
answer