Приходит разрозненная информация, которая к тому же меняет в ячейках свой адрес, ввиду чего не сделать формулы на постоянной основе. Нужно каким то методом, (при обновлении информации), в автоматическом режиме линейные размеры длина*ширина пересчитывать в метрах квадратных.
Sub iArea()
Dim i As Long
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "(\d{4})\*(\d{4})"
For i = 5 To 7
If .test(Cells(i, 2)) Then
Cells(i, 5) = .Execute(Cells(i, 2))(0).SubMatches(0) * .Execute(Cells(i, 2))(0).SubMatches(1) / 1000000
End If
Next
End With
End Sub
Function Square#(s$)
Dim re
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "\*(\d+\*\d+)"
If re.test(s) Then Square = Evaluate(re.Execute(s)(0).submatches(0)) / 1000000
End Function
buchlotnik, сейчас стоит задача из прайсов, которые представляют разрозненную информацию с разными системами измерения (м.п., м.кв., м.куб., штуки, кг.) сделать таблицу позволяющую быстро и безошибочно рассчитывать заказную кухонную мебель. Побочный продукт этого расчёта - деталировки на производство и информация в снабжение. Сегодня, в том числе и благодаря Вам, узнал две новые мульки в Экселе, которые позволят упростить задачу. На этом с арифметикой пожалуй всё. Но есть одна задача нерешённая - это "Получение внешних данных"- "Из интернета". Стандартные методы практически не работают, многие нужные сайты на этот запрос выдают фигню, а если обновление данных поручить персоналу, ручкам золотым... Ну Вы сами понимаете... Нужно писать какие то обменники, или как они называются... Если есть возможность помочь, не за спасибо конечно, с радостью приму помощь.
БМВ, ЛДСП меньше метра не встречал, но действительно, формула перестаёт быть универсальной, вдруг для чего то ещё пригодится.
buchlotnik, интересовался темой "Получение внешних данных" - "Из интернета", толком ни чего вразумительного не нашёл, было на форуме одно мнение, что раньше сайты были лучше структурированы, делались на основе таблиц, а сейчас лепят кто во что горазд. Во всяком случае у меня получилось только с сайтом ЦБ РФ, и то информация хоть и обновляется каждый день, но скачет из ячейки в ячейку.
Черт, а ведь верно. Соорудил такой костыль, вроде работает. =PRODUCT(TRIM(SUBSTITUTE(MID(B5;SEARCH("~*";B5)+1;4);"*";""));TRIM(SUBSTITUTE(MID(B5;SEARCH("~*";B5)+LEN(TRIM(MID(B5;SEARCH("~*";B5)+6;4)))+2;4);"*";"")))%%% Кстати, у вас тоже надо бы подправить: MID(B5;SEARCH("~**~*";B5)+1;9) У buchlotnik, изначально универсальный вариант.
Игорь Скворцов написал: из прайсов, которые представляют разрозненную информацию с разными системами измерения ... сделать таблицу позволяющую быстро и безошибочно рассчитывать...
скорее всего, здесь будет связка VBA + PQ + PP: PQ - сбор и адаптация файлов; PP - аналитика; VBA - обновить выборочно, пути к папкам, создать файлы, отправить на почту и пр.
не совсем тогда очень большие не обработает. И лучше так =IFERROR(ROUND(PRODUCT(--MID(SUBSTITUTE(TRIM(SUBSTITUTE(MID(B5;SEARCH("~**~*";B5)+1;33);"*";" "));" ";REPT(" ";15));{1;15};15))/10^6;2);"")
но за универсальность придется заплатить скоростью - считает на 30% медленнее чем у тезки а вообще писал не универсальный, а ленивый - где думать поменьше
Соблюдение правил форума не освобождает от модераторского произвола
ну длина лямбдой убирается а массивность в других ситуациях вполне нужна - опять же плата за универсальность... то ли дело регулярки - но это в гугле...
Соблюдение правил форума не освобождает от модераторского произвола