Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Excel. Формулки. Скрипт v.5

Excel. Формулки. Скрипт v.5

Ответ
Поиск в этой теме
Непрочитано 23.03.2008, 12:14
Excel. Формулки. Скрипт v.5
YRat
 
Support - ACD, ASD, ACA, ACM, RAC, RST
 
Stuttgart-Петербург
Регистрация: 19.10.2004
Сообщений: 238

Доброго времени суток
Предлагаю скрипт функции. Функция записывает формулу указанной ячейки в числах с подстановкой (в другой ячейке разумеется).
Для чего? Иногда надо чтобы "ход расчёта" был виден. С этим в экселе при распечатке плохо - не проверить как и откуда получилось то или иное значение.

Код:
Код:
[Выделить все]
Public Function zFrml(i As Range) As String
Application.Volatile True
Dim str As String
str = i.Formula
Set RegEx = CreateObject("vbscript.regexp")
With RegEx
        .MultiLine = False
        .Global = True
        .IgnoreCase = True
        .Pattern = ",\d+\)|[ROUNDPWN]{4,10}\("
End With
str = RegEx.Replace(str, "")
With RegEx
        .MultiLine = False
        .Global = True
        .IgnoreCase = True
        .Pattern = "([A-Z]{1,2}\d{1,5})"
End With
str = RegEx.Replace(str, """&$1&""")
Set RegEx = Nothing
str = Replace(str, "*", Chr(183))
str = Replace(str, "=", "=""")
If (InStr(str, "&") = 2) Then str = Replace(str, "=&", "=")
If (InStr(str, """&") = 2) Then str = Replace(str, "=""&", "=")
If (InStrRev(str, "&") < Len(str)) Then str = str + "="""
If (InStrRev(str, "&") = Len(str)) Then str = str + """="""
str = Evaluate(str)
str = Replace(str, ".", ",")
zFrml = str
End Function

Public Function zFrml3(i As Range, units As String) As String
Application.Volatile True
Dim str As String
str = i.Formula
Dim va As String
va = i.Value
Set RegEx = CreateObject("vbscript.regexp")
With RegEx
        .MultiLine = False
        .Global = True
        .IgnoreCase = True
        .Pattern = ",\d+\)|[ROUNDPWN]{4,10}\("
End With
str = RegEx.Replace(str, "")
With RegEx
        .MultiLine = False
        .Global = True
        .IgnoreCase = True
        .Pattern = "(([A-Z]{1,2}\d{1,5})|(zZif\([A-Z]{1,2}\d{1,5}\)))"
End With
str = RegEx.Replace(str, """&$1&""")
Set RegEx = Nothing
str = Replace(str, "*", Chr(183))
str = Replace(str, "=", "=""")
If (InStr(str, "&") = 2) Then str = Replace(str, "=&", "=")
If (InStr(str, """&") = 2) Then str = Replace(str, "=""&", "=")
If (InStrRev(str, "&") < Len(str)) Then str = str + " = """
If (InStrRev(str, "&") = Len(str)) Then str = str + """ = """
str = str + "&" + i.Address
If (Len(units) > 0) Then str = str + "&"" [" + units + "]"""
str = Evaluate(str)
str = Replace(str, ".", ",")
zFrml3 = str
End Function

Public Function zZif(i As Range)
Application.Volatile True
Dim str As String
str = i.Formula
Set RegEx = CreateObject("vbscript.regexp")
With RegEx
        .MultiLine = False
        .Global = True
        .IgnoreCase = True
        .Pattern = "=zFrml3\(([A-Z]{1,2}\d{1,5})+,[\d\D""]{2,5}"
        
End With
str = RegEx.Replace(str, "$1")
Set RegEx = Nothing
str = Range(str).Value
zZif = str
End Function
На картинке видно название функции и её применение.
Надеюсь пригодиться ещё кому-нить.

Ещё кое-что полезное - xla-надстройка. Для чего? Для форматирования текста в ячейках. В паре с вышеперечисленными функциями дает неплохой вариант оформления.
В общем-то на миниатюре видно как оно всё выглядит, тратить времени на это форматирование я стал меньше, факт

Миниатюры
Нажмите на изображение для увеличения
Название: mask.gif
Просмотров: 779
Размер:	15.3 Кб
ID:	4766  

Вложения
Тип файла: zip FormulaEdit toolbar.zip (28.1 Кб, 346 просмотров)

__________________
без DWG мы никуда - и не туда, и не сюда...
Спасибо за то, что Вы есть, коллеги ;)

Последний раз редактировалось YRat, 06.08.2010 в 14:40. Причина: Изменение скрипта. v.6
Просмотров: 13633
 
Непрочитано 28.03.2008, 20:20
#21
SLADE

проектировщик-новобранец
 
Регистрация: 14.09.2005
Minsk
Сообщений: 324


YRat привет есть пару идей по модернизации, например , было бы неплохо сочетание ^2 заменять символом ² (00B2) ; ^3 - ³ (00B2)
zFrml - что бы не писала "="
При защите листа макрос перестает работать, это навсегда?
Спасибо
SLADE вне форума  
 
Автор темы   Непрочитано 28.03.2008, 21:50
#22
YRat

Support - ACD, ASD, ACA, ACM, RAC, RST
 
Регистрация: 19.10.2004
Stuttgart-Петербург
Сообщений: 238


про замену. Сложно, почему, потому как у тебя может стоять ^20 а поставит только квадрат, хотя степени 20 и 30 и более редкость, сделать попробую
Про равно - уберу
про защиту листа... проверю, что смогу
__________________
без DWG мы никуда - и не туда, и не сюда...
Спасибо за то, что Вы есть, коллеги ;)
YRat вне форума  
 
Автор темы   Непрочитано 28.03.2008, 22:27
#23
YRat

Support - ACD, ASD, ACA, ACM, RAC, RST
 
Регистрация: 19.10.2004
Stuttgart-Петербург
Сообщений: 238


Про защиту листа и всей книги - у меня все продолжает работать.. я сказал какие ячейки можно изменять и все.. все работает
__________________
без DWG мы никуда - и не туда, и не сюда...
Спасибо за то, что Вы есть, коллеги ;)
YRat вне форума  
 
Непрочитано 28.03.2008, 23:03
#24
Клякса

Инженер
 
Регистрация: 15.08.2007
Питер
Сообщений: 36
<phrase 1=


Есть личная книга макросов в ехеле. Макрос, функция или любая саба из этой книги может быть доступна в ЛЮБОЙ новой или старой книге. Примерное расположение:
C:\Documents and Settings\Алексей\Application Data\Microsoft\Excel\XLSTART\PERSONAL.XLS
__________________
Ошибку нашел и исправил, но в чем она заключалась, так и не понял...
Клякса вне форума  
 
Автор темы   Непрочитано 28.03.2008, 23:09
#25
YRat

Support - ACD, ASD, ACA, ACM, RAC, RST
 
Регистрация: 19.10.2004
Stuttgart-Петербург
Сообщений: 238


Клякса, да, это так, но не в каждой книге мне нужны эти функции, проще сделать себе xlt-шаблон для расчетов
__________________
без DWG мы никуда - и не туда, и не сюда...
Спасибо за то, что Вы есть, коллеги ;)
YRat вне форума  
 
Автор темы   Непрочитано 29.03.2008, 17:35
#26
YRat

Support - ACD, ASD, ACA, ACM, RAC, RST
 
Регистрация: 19.10.2004
Stuttgart-Петербург
Сообщений: 238


SLADE
Таг, про замену - невозможно, ибо эти символы находятся вне анси кодировки, НО
Сделай себе автозамену все решается)

Replace: With:
(micro) µ
(delta) ∆
(deg) °
(degree) °
(+/-) ±
(^2) ²
(^3) ³
(1/4) ¼
(1/2) ½
(3/4) ¾
(dot) ·
(part) ∂
(partial) ∂
(inf) ∞
(infinity) ∞

Где делать? Англ.путь таков Tools > Options > Spelling tab > Autocorrect Options button > Autocorrect tab
Так что в русском нечто типа сервис,опции, проверка орфографии, автозамена

Воот, сам проверил, у меня работает НО при введении формулы, т.е. старые формулы само не заменит!

Знак равно убрал, смотри первый пост, заодно там xla-надстройка для форматирования - оформления формул
__________________
без DWG мы никуда - и не туда, и не сюда...
Спасибо за то, что Вы есть, коллеги ;)
YRat вне форума  
 
Автор темы   Непрочитано 03.04.2008, 11:18
#27
YRat

Support - ACD, ASD, ACA, ACM, RAC, RST
 
Регистрация: 19.10.2004
Stuttgart-Петербург
Сообщений: 238


По поводу автозамены ^2 на квадратик..
Я сделал автозамену не (^2), а ^2 на ² - думал я самый умный, оказалось нет, надоделать именно (^2), ибо (прикиньте, ИБО ©КВН) если писать ^2 просто в формуле, то эта зараза тоже заменяет на ² и ёксель не считает за формулу это и ругается, вот
__________________
без DWG мы никуда - и не туда, и не сюда...
Спасибо за то, что Вы есть, коллеги ;)
YRat вне форума  
 
Непрочитано 24.04.2008, 17:02
#28
SLADE

проектировщик-новобранец
 
Регистрация: 14.09.2005
Minsk
Сообщений: 324


YRat для логических операторов подладить можно?
(иногда форлула с логич. операторами записывается, и тогда функцыя не видит формулу)
SLADE вне форума  
 
Автор темы   Непрочитано 24.04.2008, 17:05
#29
YRat

Support - ACD, ASD, ACA, ACM, RAC, RST
 
Регистрация: 19.10.2004
Stuttgart-Петербург
Сообщений: 238


SLADE, листик с примерами прикрепляй, посмотрим
С нужными примерами имею ввиду
__________________
без DWG мы никуда - и не туда, и не сюда...
Спасибо за то, что Вы есть, коллеги ;)
YRat вне форума  
 
Непрочитано 25.04.2008, 10:02
#30
SLADE

проектировщик-новобранец
 
Регистрация: 14.09.2005
Minsk
Сообщений: 324


проложил
Вложения
Тип файла: rar Лист Microsoft Excel.rar (9.3 Кб, 147 просмотров)
SLADE вне форума  
 
Автор темы   Непрочитано 25.04.2008, 12:57
#31
YRat

Support - ACD, ASD, ACA, ACM, RAC, RST
 
Регистрация: 19.10.2004
Stuttgart-Петербург
Сообщений: 238


SLADE, значит так:
Вариант 1
Представь себе, что там 3 раза вложен "если"..
[IMG]http://i024.***********/0804/9d/0ad781b414b2.png[/IMG]
сложновато, но подумаю

Вариант 2
В функции zzif по определению аргументом может быть ячейка, содержащая ТОЛЬКО фунцию zfrml3
Тоже подумаю

Есть еще один вариант.. правда посложнее..
выражение брать по варианту 2, а значение по 1
__________________
без DWG мы никуда - и не туда, и не сюда...
Спасибо за то, что Вы есть, коллеги ;)

Последний раз редактировалось YRat, 25.04.2008 в 13:17.
YRat вне форума  
 
Непрочитано 25.04.2008, 13:31
#32
SLADE

проектировщик-новобранец
 
Регистрация: 14.09.2005
Minsk
Сообщений: 324


хитец однако,
Просто ели применять вариант 2, то можно не пользоваться дополнительными вычислениями
SLADE вне форума  
 
Автор темы   Непрочитано 25.04.2008, 13:37
#33
YRat

Support - ACD, ASD, ACA, ACM, RAC, RST
 
Регистрация: 19.10.2004
Stuttgart-Петербург
Сообщений: 238


SLADE,
кстати, не мог бы ты прикрепить сюда один из своих листов, или мне на мыло, хоть посмотреть как это там у тебя выглядит в полном варианте
__________________
без DWG мы никуда - и не туда, и не сюда...
Спасибо за то, что Вы есть, коллеги ;)
YRat вне форума  
 
Непрочитано 28.04.2008, 17:59
#34
SLADE

проектировщик-новобранец
 
Регистрация: 14.09.2005
Minsk
Сообщений: 324


YRat а то что я выложил, не подошло , или просто пример применения скрипта ? (я непонял что выложить?)
SLADE вне форума  
 
Автор темы   Непрочитано 28.04.2008, 18:59
#35
YRat

Support - ACD, ASD, ACA, ACM, RAC, RST
 
Регистрация: 19.10.2004
Stuttgart-Петербург
Сообщений: 238


SLADE, ты там чегой-то оформляешь же? Выложи какой-нить оформленный пример, чтобы подивиться.
__________________
без DWG мы никуда - и не туда, и не сюда...
Спасибо за то, что Вы есть, коллеги ;)
YRat вне форума  
 
Непрочитано 29.04.2008, 14:57
#36
SLADE

проектировщик-новобранец
 
Регистрация: 14.09.2005
Minsk
Сообщений: 324


хорошо, выложу
SLADE вне форума  
 
Непрочитано 17.05.2008, 12:01
#37
SLADE

проектировщик-новобранец
 
Регистрация: 14.09.2005
Minsk
Сообщений: 324


YRat привет, очистить формулу от $ можно?
=$M28/1000*$O28*0.001*F4*0.3
= $180/1000·$1,5·6·0,001·80·0,3 = 0,03888 [тс]
при жесткой привязке пишет
= $M$28/1000·$1,5·0,001·80·0,3 = 0,00648 [тс/м]
SLADE вне форума  
 
Автор темы   Непрочитано 19.05.2008, 01:30
#38
YRat

Support - ACD, ASD, ACA, ACM, RAC, RST
 
Регистрация: 19.10.2004
Stuttgart-Петербург
Сообщений: 238


Угу, можно, там надо просто отфильтровать этот знак перед обработкой
__________________
без DWG мы никуда - и не туда, и не сюда...
Спасибо за то, что Вы есть, коллеги ;)
YRat вне форума  
 
Непрочитано 05.08.2010, 02:05
#39
SLADE

проектировщик-новобранец
 
Регистрация: 14.09.2005
Minsk
Сообщений: 324


YRat доброго времени суток.
Подскажи пож.
При переходе с листа на лист значения в формулы в ячейках с командой zFrml3 или zFrml , имеют вид, например
= (+(/3)·(2-(/)))/1000 = [м]
а после ввода ссылки обнавляются
получаю требуемы вид
= (150+(250/3)·(2-(27,398/65,747)))/1000 = 0,282 [м]

Можно что-нибудь подшаманить, чтобы не приходилось каждый раз жать ввод???
SLADE вне форума  
 
Непрочитано 05.08.2010, 14:24
#40
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Здесь можно посмотреть кучу кода по теме.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Excel. Формулки. Скрипт v.5

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таблицы из Excel в AutoCAD вставляются неполностью Nikolay_N AutoCAD 23 07.09.2019 21:12
Excel - оформление формул Добрыня Разное 4 13.09.2007 20:39
Тексты из ACAD в Excel miha AutoCAD 9 18.04.2007 13:43
Проблемы в Excel G.A.W. Разное 11 27.02.2007 12:11
Как перенести информацию из табл. в Автокаде в Excel Margarinchik AutoCAD 9 29.11.2006 19:17