Страницы: 1
RSS
Результат числа зависит от сколько знаков после запятой в погрешности
 
Здравствуйте, нужна помощь в написании формулы. На примере №1 объясню, если результат равняется "5", а погрешность "1,3", то запись должна быть "5,0±1,3",то есть если у погрешности после запятой есть знак, то число нужно выводить то же после запятой знак. Примере №2 , если результат равняется "5", а погрешность "1", то запись должна быть "5±1, Примере №3 , если результат равняется "4,6", а погрешность "1", то запись должна быть "4,6±1,0. Погрешность может быть разные цифры, это я так в пример привел, не обязательно "1,3" или "1", также и в числе. Я смог реализовать  получить нужный результат, но слишком много формул пришлось создать. Может у кого то по короче получиться.
 
Возможно так
=TEXT(4,6;TEXT(MAX(0;LEN(1,3)-FIND(",";1,3&","));"\0\,;;\0")&REPT(0;MAX(0;LEN(1,3)-FIND(",";1,3&","))))&"±"&1,3
По вопросам из тем форума, личку не читаю.
 
Я, так понимаю здесь надо еще до думать, это перевести формулы с английского на русский заменить "4,6" и "1,3" на формулы чтобы получить формулу следующего вида
Скрытый текст
Если так, то спасибо
 
Что то у меня оба предложенных варианта не заработали как требуется. Ради интереса накидал в VBA пару строк.  


Код
Public Function погрешность(x As Single, dx As Single) As String
x = Round(x, 1)
dx = Round(dx, 1)
If (x - Int(x) = 0 And dx - Int(dx) = 0) Or (x - Int(x) > 0 And dx - Int(dx) > 0) Then погрешность = x & "±" & dx
If x - Int(x) = 0 And dx - Int(dx) > 0 Then погрешность = x & ",0±" & dx
If x - Int(x) > 0 And dx - Int(dx) = 0 Then погрешность = x & "±" & dx & ",0"
End Function


 
Изменено: tutochkin - 28.10.2021 11:34:04 (Догрузил файлик)
 
tutochkin, а вы учли, что Round() в VBA использует банковское округление, а не математическое?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
а вы учли, что Round() в VBA использует банковское округление, а не математическое?
Не учитывал. Спасибо за наводку.
Тогда так:

Код
Public Function погрешность(x As Single, dx As Single) As String
x = WorksheetFunction.Round(x, 1)
dx = WorksheetFunction.Round(dx, 1)

If (x - Int(x) = 0 And dx - Int(dx) = 0) Or (x - Int(x) > 0 And dx - Int(dx) > 0) Then погрешность = x & "±" & dx
If x - Int(x) = 0 And dx - Int(dx) > 0 Then погрешность = x & ",0±" & dx
If x - Int(x) > 0 And dx - Int(dx) = 0 Then погрешность = x & "±" & dx & ",0"
End Function
 
Цитата
Что то у меня оба предложенных варианта не заработали как требуется.
Вот пример
Изменено: Lerik2020 - 28.10.2021 13:46:00
 
Цитата
Lerik2020 написал:
Вот пример
А можно сделать пример с тремя ячейками.

Первая ячейка - число
Вторая ячейка - погрешность числа
Третья ячейка - собранный текст

И чтоб вот прям как у вас было написано:
"5" и "1,3" =>"5,0±1,3"
"5" и "1"    => "5±1"
"4,6" и "1" => "4,6±1,0

Просто в вашем примере пьедестала непонятно ничего, есть два вывода. Первый старый, второй новый (под словом "ВОТ"). И если в сменить исходные данные на 5,6 и 5, то результаты расчётов (нового и старого) будут разные...

 
 
Подправил чуть-чуть, всё сходиться
 
Lerik2020,как я понял погрешность числа Х (среднего значения из... не суть) вы рассчитываете по формуле (1+0.05*Х). Странная погрешность.

При Х>100.1 Ваш вариант не работает. Впрочем как и при 0,9 и ниже.


Упд, да и вообще не работает. Среднее значение между 5,2 и 5,6 точно не 5-ть, но говоря уж про отсутствие дробной части Х в результате.

Если хочется без VBA, то вот такая строка:
Код
=ЕСЛИ(ИЛИ(И(ОКРУГЛ(A2;1)-ОКРУГЛВНИЗ(ОКРУГЛ(A2;1);0)=0;ОКРУГЛ(B2;1)-ОКРУГЛВНИЗ(ОКРУГЛ(B2;1);0)=0);
                          И(ОКРУГЛ(A2;1)-ОКРУГЛВНИЗ(A2;0)>0;ОКРУГЛ(B2;1)-ОКРУГЛВНИЗ(ОКРУГЛ(B2;1);0)>0));ОКРУГЛ(A2;1)&"±"&ОКРУГЛ(B2;1);
ЕСЛИ(И(ОКРУГЛ(A2;1)-ОКРУГЛВНИЗ(ОКРУГЛ(A2;1);0)=0;ОКРУГЛ(B2;1)-ОКРУГЛВНИЗ(ОКРУГЛ(B2;1);0)>0);ОКРУГЛ(A2;1)&".0±"&ОКРУГЛ(B2;1);
ОКРУГЛ(A2;1)&"±"&ОКРУГЛ(B2;1)&".0"))
 
Во первых, Вы вытащили мою формулу и вставили к себе в файл, не обратив внимания на, то что она еще ссылается на ячейки "D14", "E14" (границы), эта уже отклонение от моей формулы. Вообщем картинку прикрепил, с "5,2" и "5,6" всё считает, не знаю почему у Вас не считает. Если будете работать вот файл работайте в нём. А Ваше второе предложение с формулой "Если хочется без VBA, то вот такая строка:", это длинная
 
Цитата
Lerik2020 написал:
Во первых, Вы вытащили мою формулу и вставили к себе в файл
Я никуда ничего не перетаскивал. Я взял файл выложенный Вами в посте №9

Цитата
Lerik2020 написал:
Подправил чуть-чуть, всё сходиться

Это Вы вставили формулу, вставили в мой файл и выложили посте №9. Никаких границ в этом файле нет (Вы не указали).
Я сейчас повторно скачал выложенный Вами файл из поста 9, вбил вместо 25,3 (Вашего значения в ячейке А11) значение 100,1 и получил не верный расчёт по вставленной Вами формуле (ячейки F10 G10, что добавили в мой файл Вы)... ну и т.д.

Повторяю свой запрос:
Цитата
tutochkin написал:
А можно сделать пример с тремя ячейками.
Первая ячейка - число
Вторая ячейка - погрешность числа
Третья ячейка - собранный текст
И чтоб вот прям как у вас было написано:  
"5" и "1,3" =>"5,0±1,3"
"5" и "1"    => "5±1"
"4,6" и "1" => "4,6±1,0

УПД. Причину не работы при 5,2 и 5,6 нашёл - у меня в качестве разделителя используются точки, а не запятые. Что не мешает работать макросу. А вот 100,1 так и не стало по вашему варианту работать.
Изменено: tutochkin - 29.10.2021 13:06:50
 
Ну а в посте №4, откуда взяли формулу, там нет ссылки "D14", "E14" из моего первого примера. Во вложенном примере из поста №12 я ошибся указав на формулу из ячейки "P16", смотрите результат  из ячейки "P15"
Цитата
tutochkin написал:
А можно сделать пример с тремя ячейками.
Надо в одной ячейки
 
Цитата
Lerik2020 написал:
Ну а в посте №4, откуда взяли формулу
А причём тут пост №4, если был Ваш пост №9, в котором Вы указали что "чуть чуть поправили и всё сходится". По логике все прошлые варианту не актуальны. И для анализа использовался  Ваш последний вариант. Который, впрочем, так и не заработал (см. вставку 100.1 хоть в одну ячейку хоть в две).
Цитата
Lerik2020 написал:
Во вложенном примере из поста №12 я ошибся
Вы не могли ошибиться в примере поста №12 по двум причинам:
1 - пост 12 это мой пост
2 - в нём нет вложений.
Цитата
Lerik2020 написал:
Надо в одной ячейки
Об этом в первом посте указаний нет.  
Страницы: 1
Наверх