Вопрос по Экселю
Создана: 29 Июня 2004 Втр 22:36:54.
Раздел: "Нужна помощь"
Сообщений в теме: 7, просмотров: 942
-
Имеется поле, в которое заносятся размеры объекта, например: 10*8*6.5. Это поле используется просто для их отображения, поэтому знака "=" перед ними нет.
В другом поле необходимо сосчитать объём упаковки (для простоты допустим, что просто помножить размеры сторон) и результат умножить на некий коэффицент, который берется из другого поля.
Вопрос: можно ли каким-нибудь образом не переписывать этот размер во втором случае вручную, типа:
=[10*8*6.5]*[коэффицент из другого поля], а поставить ссылку на первое поле, например:
=[номер поля с размером]*[коэффицент из другого поля]
Если пытаться просто поставить обыкновенную ссылку, в ответе получается исключительно "#VALUE", ведь размеры в первом поле отображаются как текст, который в расчётах использовать не получается.
-
1. если знаешь кол-во символов(цифр) в размерах (ширина/длина/высота), можно поиграться с текстовыми функциями, такими как (на русском) ЛЕВСИМВ(), ПРАВСИМВ(), ПСТР(), ЗНАЧЕН(). Но при этом кол-во символов(цифр) дожно быть фиксировано.
2. если кол-во символов может быть разным (пр. то 6, то 10, а то и 120), пиши свою функцию, которая будет выцеплять размеры сначала текстовой строки до первой "*" слева, с конца до правой "*" и между двумя "*".
3. проще не париться, не умничать, а завести три ячейки - длина, ширина, высота (к тому же так будет проще понять "длинный предмет" или "высокий", хотя если возник вопрос, значит на данном этапе неважно понимать) - и перемножать их.
Удачи! -
Muchnik писал(а) :Если пытаться просто поставить обыкновенную ссылку, в ответе получается исключительно "#VALUE", ведь размеры в первом поле отображаются как текст, который в расчётах использовать не получается.
Естественно, что такая операция не будет осуществлена. И ты сам ответил на свой вопрос:
Muchnik писал(а):...размеры... отображаются как текст...
В противном случае произошёл бы автоматический подсчёт произведения трёх данных чисел.ЗАВАРКА писал(а):...поэтому проще не париться, не умничать, а завести три ячейки - длина, ширина, высота... -
Рассуждать все горазды, но вот дельного ничего предложить не получается.
Заварка: хорошие идеи, но не совсем подходящие. Кол-во символов может быть разным, а использование 3-х разных полей для ввода размеров не соответствует формату таблицы.
Написать свою функцию - пожалуй, придётся, если ничего другого не придумается. Просто мне казалось, что должно быть более простое решение проблемы
А длинный предмет или высокий, совершенно неважно.
Важно, сколько этих предметов помещается в контейнере.
Похоже, фрихост.омск.орг заработал. Если ещё будет работать, когда домой приду, то выложу туда собственно сам файл (с работы не могу зайти на ФТП). -
2 Muchnik
Excel у вас англоязычный (точка, а не запятая в дробях и ошибка #VALUE – в русском варианте #ЗНАЧ!), так что простите – названия функций не совпадут.
Поэтому привожу список:
Текстовые функции
НАЙТИ – возвращает позицию начала искомой строки текста в содержащей её строке текста
ПСТР - возвращает указанное число знаков из текстовой строки, начиная с указанной позиции
ДЛСТР – возвращает количество знаков в текстовой строке
Итак:
Предположим, что исходные данные хранятся в ячейке A1 (вид: a*b*c), при этом дробное число или целое значения не имеет (также как и число разрядов переменных):
Вытаскиваем 1-е число (a):
=ПСТР(A1;1;(НАЙТИ("*";A1;1))-1)
Вытаскиваем 2-е число (b):
=ПСТР(A1;НАЙТИ("*";A1;1)+1;НАЙТИ("*";A1;НАЙТИ("*";A1;1)+1)-НАЙТИ("*";A1;1)-1)
Вытаскиваем 3-е число (c):
=ПСТР(A1;НАЙТИ("*";A1;НАЙТИ("*";A1;1)+1)+1;НАЙТИ("*";A1;ДЛСТР(A1)-НАЙТИ("*";A1;НАЙТИ("*";A1;1)+1)))
Соответственно, загоняя данные «вытаскивания» в функцию
ПРОИЗВЕД(число1;число2;число3) получаем произведение:
ПРОИЗВЕД(ПСТР(A1;1;(НАЙТИ("*";A1;1))-1);ПСТР(A1;НАЙТИ("*";A1;1)+1;НАЙТИ("*";A1;НАЙТИ("*";A1;1)+1)-НАЙТИ("*";A1;1)-1); ПСТР(A1;НАЙТИ("*";A1;НАЙТИ("*";A1;1)+1)+1;НАЙТИ("*";A1;ДЛСТР(A1)-НАЙТИ("*";A1;НАЙТИ("*";A1;1)+1)))
Вуаля.
P.S. В основу была положена идея ЗАВАРКИ.
Работоспособность тестировалась всесторонне.
Ошибок вроде нет, но если что - есть файл. -