
У онлайн-брокера, которым я пользуюсь, наверное, самый неработающий сайт в мире! Они не предоставляют функцию «экспорта», вместо этого сообщая пользователям, что они могут просто копировать данные из таблиц, отображаемых в их браузере, и вставлять их в Excel. (Серьёзно!)
Удивительно, но Excel (2016, для Mac) можно заставить преобразовать «положительные текстовые числа» в реальные числа, над которыми можно работать с числовыми функциями ( SUM
обычно). Однако «отрицательные текстовые числа» не поддаются всем попыткам преобразовать их в отрицательное число.
«Положительное число текста»: $123.45
«Отрицательное текстовое число»: -$543.21 (обратите внимание на начальный текстовый символ hyphen
)
EDIT:
«Отрицательное текстовое число» составляет: – $299.55 (Обнаружено, что ведущий персонаж –НЕТаhyphen
; это может бытьem dash
Прошу прощения за путаницу... Теперь мне интересно, какие программисты могли бы использоватьem dash
вместоminus sign/hyphen
на веб-странице, полной цифр, но это вопрос к моемуонлайн-брокер.
Я могу преобразовать «положительное текстовое число» в ячейке A1 следующим образом:=VALUE(RIGHT(A1,6))
Но это не работает с "отрицательным текстовым числом". Он получает число правильно, но теряет знак "минус". Я пробовал менять значение chars
, но это не помогает.
Я также пробовал следующее, но безуспешно:
1. умножение на 1
2. преобразование текста в столбцы
3. форматирование ячеек...
Есть ли способ сделать это, кроме как вручную повторно вводить данные?
решение1
Думаю, я нашел простое решение. В одной из ячеек с начальным тире выделите и скопируйте только тире. Используя функцию Excel «Найти и заменить», вставьте тире в блок «Найти что», затем введите знак минус в блок «Заменить на». Примените замену ко всем ячейкам, которые вы хотите преобразовать.
решение2
Если ячейка A1 содержиттекстто есть в формате «$123.45» или «-$543.21», вы можете использовать следующую формулу для получения числового значения.
=IF(LEFT(A1,1)="-",0-VALUE(RIGHT(A1,LEN(A1)-1)),VALUE(A1))
Если текст начинается с «-», то будут извлечены значения всех символов после «-» и сделаны отрицательными.
решение3
Я бы рекомендовал:
- Извлечь значение после
$
знака, не использовать фиксированную позицию - Проверьте знак значения, отметив символ, стоящий непосредственно перед
$
знаком.
Так что формула может быть такой:
=IF(IF(ISERROR(FIND(MID(A1,FIND("$",A1)-1,1),"<dash><hyphen>")),3,FIND(MID(A1,FIND("$",A1)-1,1),"<dash><hyphen>"))<3,-MID(A1,FIND("$",A1)+1,LEN(A1)),0+MID(A1,FIND("$",A1)+1,LEN(A1)))
где
"<dash><hyphen>"
- литерал с возможными отрицательными знаками (замените заполнители соответствующими символами в любом порядке, чтобы получить двухсимвольный литерал в показанном случае)
3
- число, которое больше количества символов в предыдущем литерале
Эти значения можно заменить ссылкой на ячейку, содержащую все возможные знаки «минус» (например, Z1
и 1+LENGTH(Z1)
соответственно).
Обновление. Отладка формулы.
Создайте таблицу на пустом листе.
Введите 4 различных значения в столбец A (без или с начальным пробелом, положительные или отрицательные).
Вставьте следующие формулы:
Cell Formula Meaning
-------------------------------------------------------------
$B$1 =IF(I1,-G1,0+G1) Result
$C$1 =LEN(A1) Data length in source
$D$1 =FIND("$",A1) $ position in source
$E$1 =MID(A1,D1-1,1) symbol before $
$F$1 =FIND(E1,"<dash><hyphen>") symbol before $ position in hyphens list
$G$1 =MID(A1,D1+1,C1) number from source
$H$1 =ISERROR(F1) correction when no symbol before $ in list
$I$1 =IF(H1,3,F1)<3 define is a source positive or negative
Скопируйте этот пакет формул в строки 2-4. Проверьте, что вы получаете такой вывод:
A B C D E F G H I
1 $123 123 4 1 #VAL! #VAL! 123 TRUE FALSE
2 -$234 -234 5 2 - 1 234 FALSE TRUE
3 $345 345 6 3 #VAL! 345 TRUE FALSE
4 -$456 -456 7 4 - 1 456 FALSE TRUE
Столбец CI содержит отдельные этапы расчета, а столбец B содержит окончательную формулу со всеми подстановками.
Где ошибка в расчетах?