Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Выделение числа из текста в excel. HELP!!! Добавлено: 20.07.08 10:10  

Автор вопроса:  Black__Hole | ICQ: 164901252 
Подскажите, пожалуйста, как можно средствами excel сделать следующее:
В ячейку вводится текст "34,6 х 3,2".
Надо выделить числа, перемножить их, использовать полученный результат в дальнейших расчетах.
Можно ли это сделать без использования макросов?

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 Jktu



ICQ: 381648295 

Вопросов: 8
Ответов: 32
 Профиль | | #1 Добавлено: 20.07.08 10:52
Можно и без макросов, с помощью формул.
Только для этого нужно, чтобы числа имели фиксированную длину. Ну или вообще хоть что-то общее, например, пробелы вокруг знака умножения "х".
Допустим, текст в ячейке А1. Формула:
=ЛЕВСИМВ(A1;4)*ПРАВСИМВ(A1;3)
Возможно (в зависимости от настроек Экселя) нужно будет заменить запятую на точку:
=ЗАМЕНИТЬ(ЛЕВСИМВ(A1,4),3,1,".";)*ЗАМЕНИТЬ(ПРАВСИМВ(A1,3),2,1,".";)
Если числа не фиксированной длины, но вокруг знака умножения всегда стоят пробелы, тогда:
=ЛЕВСИМВ(A1;НАЙТИ(" ";A1)-1)*ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(" ";A1)-2)
Или, опять же, если необходимо заменить запятую на точку:
=ПОДСТАВИТЬ(ЛЕВСИМВ(A1,НАЙТИ(" ",A1)-1),",",".";)*ПОДСТАВИТЬ(ПРАВСИМВ(A1,ДЛСТР(A1)-НАЙТИ(" ",A1)-2),",",".";)

Ответить

Номер ответа: 2
Автор ответа:
 Black__Hole



ICQ: 164901252 

Вопросов: 1
Ответов: 2
 Профиль | | #2 Добавлено: 20.07.08 11:30
Спасибо! Хотя уже успела разобраться самостоятельно следующим образом:
Используются 3 вспомогательные ячейки
ячейка K1 =ПОИСК("х";A1;1)
ячейка K2 =ЛЕВСИМВ(A1;K1-1)
ячейка K3 =ПСТР(G14;H14+1;6)
Ну, потом легко из K2 и K1 считаем площадь, периметр.
В моем решении не важно, сколько пробелов стоит до или после знака умножения, однако встала другая проблема:

пользователь может ошибиться при вводе и поставить, к примеру, лишний пробел в самом числе ("5 ,6 х 5,22).
Как удалить такие пробелы?

Ответить

Номер ответа: 3
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #3 Добавлено: 20.07.08 12:04
Наверное какой-то другой строковой функцией?

Ответить

Номер ответа: 4
Автор ответа:
 Black__Hole



ICQ: 164901252 

Вопросов: 1
Ответов: 2
 Профиль | | #4 Добавлено: 20.07.08 12:42
Наиболее подходящей представляется функции замещения. Однако в данном случае символ пробела надо замещать на отсутствие символа. Как сделать это?

Ответить

Номер ответа: 5
Автор ответа:
 Jktu



ICQ: 381648295 

Вопросов: 8
Ответов: 32
 Профиль | | #5 Добавлено: 20.07.08 14:29
Самая подходящая вот эта итоговая формула:
=ЛЕВСИМВ(ПОДСТАВИТЬ(A1;" ";"";);НАЙТИ("х";ПОДСТАВИТЬ(A1;" ";"";))-1)*ПРАВСИМВ(ПОДСТАВИТЬ(A1;" ";"";);ДЛСТР(ПОДСТАВИТЬ(A1;" ";"";))-НАЙТИ("х";ПОДСТАВИТЬ(B1;" ";"";)))
Только формула выдаст ошибку, если она не найдёт в ячейке "х". То есть он там должен быть в любом случае.

Ответить

Номер ответа: 6
Автор ответа:
 Jktu



ICQ: 381648295 

Вопросов: 8
Ответов: 32
 Профиль | | #6 Добавлено: 20.07.08 14:32
То же самое можно сделать и для функции сложения, вычитания, деления. Можно сделать так, чтобы функция распознавала сама, какой там содержится знак. Только это будет мега-формула!
И работать она будет только в том случае, если в ячейке содержится только одно арифметическое действие.
Удачи!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам