Implement lazy evaluation of function arguments for LOOKUP functions (HLOOKUP, VLOOKUP) to improve performance with large table ranges.
### Description It seems excelize evaluates all function arguments before calling a function, which doesn't work well with LOOKUP (HLOOKUP, VLOOKUP ...) functions, especially if table range is large. E.g. `=VLOOKUP(C1, A:XFD, 2)` will try to calculate all the cells in the table, instead of just lazily calculating cells in A column, and then calculate a corresponding single cell from B column. ### Steps to reproduce the issue 1. Add this simple table to the project [vlookup.xlsx](https://github.com/user-attachments/files/18487696/vlookup.xlsx) 2. Run this code ```go package main import ( "fmt" "github.com/xuri/excelize/v2" ) func unwrap[T any](v T, err error) T { if err != nil { panic(err) } return v } func main() { file := unwrap(excelize.OpenFile("vlookup.xlsx")) val := unwrap(file.CalcCellValue("Sheet1", "C2")) fmt.Println(val) } ``` ### Describe the results you received It takes ages to calculate this field value. ### Describe the results you expected It should