Проблема при использовании формулы JXL, такой как SUM () AVG () STDEV () возвращает # ЗНАЧЕНИЕ! когда он ссылается на значения из другого листа - PullRequest
4 голосов
/ 20 декабря 2010

Я хочу заполнить некоторые значения в листе, а затем использовать формулу jxl, чтобы получить значения из этого листа и записать их на другой лист ...

Когда я пытаюсь запустить этот пример кода

 
String filename = "C:\\input.xls";
      WorkbookSettings ws = new WorkbookSettings();
      ws.setLocale(new Locale("en", "EN"));
      WritableWorkbook workbook = 
      Workbook.createWorkbook(new File(filename), ws);
      WritableSheet s = workbook.createSheet("Input", 0);
      WritableSheet s1 = workbook.createSheet("Output", 1);
      s1.addCell(new Number(3, 0, 5));
      s1.addCell(new Number(3, 1, 6));
      s1.addCell(new Number(3, 2, 1));
      s1.addCell(new Number(3, 3, 6));
      s1.addCell(new Number(3, 4, 1));
      Formula formula = new Formula(3,5,"AVERAGE(Output!D1:Output!D5)");
      s.addCell(formula);

 

Я получаю последнее значение в списке AVG имеет вывод

= СРЕДНИЙ (Вывод! D5)

JAR Используется: jxl 1.0.jar ....

Решение опробовано:

1) Вместо того, чтобы дать ему формулу, я дал ему ярлык

Метка метки = новая метка (3,5, "средний (выход D1:! Д5 выход)");

Я получил весь текст в ячейке и дал '=' перед ячейкой. Это сработало как шарм. Но я хочу, чтобы это было сделано с помощью JXL API

2) Поменял JAR на jxl 2.6.jar

Теперь я получаю # VALUE! , когда пытаюсь запустить то же самое. Содержание ячейки

= СРЕДНИЙ (Вывод! D1: Вывод! D5), но все равно я получаю # ЗНАЧЕНИЕ!.

JAR Используется: jxl 2.6.jar

Эта ошибка разрешается только тогда, когда я подхожу к этой ячейке и нажимаю клавишу табуляции или клавишу F2.

Пожалуйста, предоставьте решение

Привет

N.S.Balaji

Ответы [ 2 ]

3 голосов
/ 20 декабря 2010

Похоже, что Excel оценивает формулу странным образом, поэтому вы видите #VALUE!. Чтобы понять, почему формула не работает, нажмите на ячейку формулы и перейдите к Tools > Formula Auditing > Evaluate Formula. Вы увидите, что шаги:

AVERAGE(Output!D1:Output!D5)
=AVERAGE(5:Output!D5)
=AVERAGE(5:1)
=AVERAGE(#VALUE!)
=#VALUE!

Но когда вы выполните F2+Enter в ячейке, вы увидите, что Excel меняет свой план выполнения и получает правильный ответ.

Боюсь, единственное, что я могу придумать, чтобы это исправить, - это использовать разделенный запятыми список вместо диапазона:

Formula formula = new Formula(3,5, "AVERAGE(Output!D1,Output!D2,Output!D3,Output!D4,Output!D5)");
0 голосов
/ 14 июля 2016

Вы можете решить эту проблему, если вставите, например, Z1 = "= Вывод! D1", Z2 = "= Вывод! D2" ... и позже вы попробуйте AVERAGE (z1: z5) в вашей любимой ячейке

...