VBA Excel Процентный формат в массиве - PullRequest
0 голосов
/ 22 марта 2011

Есть ли способ сохранить определенный формат в массиве?Я пытаюсь найти разницу в процентах и ​​обычную разницу между числами в двух разных сетках.Я могу делать это по отдельности, но когда я пытаюсь поместить ответ в один лист, я сталкиваюсь с ошибками.

На данный момент я вычисляю разницу в процентах, а затем выбираю таблицу, в которой находятся все мои ответы, иизменить стиль и формат номера.Тем не менее, когда я пытаюсь показать разницу (например, «разница / разница в процентах»), программа возвращает длинный десятичный знак для разницы в процентах. Я знаю, что причина в том, что формат чисел и стиль не сохраняются в фактическоммассив, но я не могу понять, как это исправить.

Я пробовал следующее:

  • Изменение формата непосредственно перед созданием косой черты и разницы
  • Присвоение массива ответов текущим значениям в активной ячейке (значения по-прежнему являются десятичными, а не процентными аналогами)
  • Расчет разницы в процентах и ​​разницы, затем изменение формата (это было большеслабая надежда, чем реальная попытка что-либо изменить)

Не могу вспомнить, попробовал ли я что-то еще, но я знаю, что это ужасно провалилось.

***** Пример ******

Пользователь отправит мою программу в конкретную рабочую книгу, в которой есть два листа с сеткой чисел на них.Точно такие же размеры.Моя программа рассчитает разницу между этими листами (Лист1 - Лист2), процентной разницей ((Лист1 - Лист2) / Лист2) и обоими.Эти три вычисления представлены на трех отдельных листах, которые создает программа.Все числа, которые производит программа, будут в ячейках, которые соответствуют ячейкам, где она получила числа в первую очередь.Кроме того, третий лист (как процент, так и разница) рассматривается как «процентная разница / разница».Теперь вот пример с тестовыми номерами.

Сетка 1

12.0    5.0

2.0     10.0

Сетка 2

6.0     7.0

1.0     3.0

Diff

6.0     -2.0

1.0     7.0

Percent Diff

100.00%     -28.57%

100.00%     233.33%

Таким образом, вкладка «Оба» будет выглядеть следующим образом:

100.00%/6.0     -28.57/-2.0

100.00%/1.0     233.33%/7.0

Извините, что я не делаю эту сетку более похожей.Я не был уверен, как это представить.

Спасибо

Ответы [ 2 ]

2 голосов
/ 23 марта 2011

Не уверен, что я полностью следую, но я думаю, что вам может понадобиться метод объекта диапазона .Text:

 dim rgNumValues as Range    ' cells formatted as 12.0, 5.0 etc
 dim rgPctValues as Range    ' cells formatted as 100%, -28.57% etc.

Затем создать новые ячейки, которые объединяют оба формата

 dim rgNumAndPct as Range

 rgNumAndPct.Cells(1,1) = rgNumValues.Cells(1,1).Text + " / " _
                        + rgPctValues.Cells(1,1).Text

 ' creates cells w string values like "12.0 / 100%", "5.0 / -28.57%" etc.

Метод ".Text" извлекает видимую строку из ваших NumValues ​​и PctValues, а не из базового числового значения.Просто переписать как цикл, чтобы сделать все ячейки.Для очень большого диапазона вы можете ускорить, создав значения NumAndPct в массиве вариантов и присвоив массив целевому диапазону.

1 голос
/ 23 марта 2011

Если вы делаете это с кодом в vba, вы бы использовали функцию Format для каждого элемента и добавляли ячейки аналогичным образом. Если бы работала простая формульная версия, что-то вроде этого, с заменой имен листов там, где это необходимо.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...