Здравия. === Content Downloader (вручили мне его на работе) Плюсы: довольно таки широкий функционал; можно заказать настройку под свои нужды (не безвозмездно).
Минусы: труден (ИМХО) в освоении. === Netpeak Spider (мне не хватило времени вложиться в 14 дней для более плотного освоения сего продукта - занят другими делами был) Плюсы: бегло ознакомившись нашёл сей продукт с весьма дружественным интерфейсом; нет ограничений функционала на время триала; по истечении 14 календарных дней использования без оплаты со мной связались по почте и уточнили как мне продукт, на что получили ответ, что не хватило времени ознакомиться - продлили срок ознакомления ещё на 14 дней. Смею судить, что техподдержка весьма дружелюбная.
Минусы: время ознакомления недостаточно и лучше бы привязали к времени использования программы хотя бы и за счёт сокращения времени, посему это единственный минус, который успел быть мной обнаружен; ну, к минусу можно ещё отнести то, что Вам придётся продлять абонемент использования программы (ЕМНИП, 100 с чем-то уёв в год, других тарифов не помню).
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Приветствую всех! Предыстория вопроса. Писал обработку двойного клика, чтобы вставить в целевую ячейку только значение скопированной ячейки. И, как всегда, я подумал о нежелательной ситуации. Допустим дрогнула рука и я скопировал не одну ячейку, а несколько и не заметил этого. Тогда по событию:
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Application.CutCopyMode = xlCopy Then Target.PasteSpecial xlPasteValues: Cancel = True
End Sub
будет заполнена значениями скопированного не одна ячейка, а диапазон размером аналогичный скопированному диапазону и отменить это действо нельзя будет.
Отсюда вопрос, как узнать сколько ячеек скопировано без вставки их на лист?
Конечно можно перестраховаться таким подходом:
Код
Option Explicit
Function ClipboardText() ' чтение из буфера обмена
' source: http://excelvba.ru/code/clipboard
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.GetFromClipboard
ClipboardText = .GetText
End With
End Function
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Application.CutCopyMode = xlCopy Then Target.Value = ClipboardText: Cancel = True
End Sub
но желательно получить ответ на свой вопрос. Всем спасибо.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Здравствуйте, уважаемые. Появилась необходимость записать значение в константу по условию, но, похоже, что это извращение и VBA не даёт этого сделать либо делает вопреки моей хотелки. )) Приведу примеры, как я пытался это сделать:
так компилятор допускает написать, но всегда возвращает 2
Код
Sub const_by_condition1()
Dim tfFlag As Boolean: tfFlag = False
#If tfFlag = True Then
Const Const1 As Long = 1
#Else
Const Const1 As Long = 2
#End If
Debug.Print Const1
End Sub
а так компилятор посылает меня лесом
Код
Sub const_by_condition2()
Dim tfFlag As Boolean: tfFlag = False
#If tfFlag = True Then
#Const Const1 = 1
#Else
#Const Const1 = 2
#End If
Debug.Print Const1
End Sub
Sub const_by_condition3()
Dim tfFlag As Boolean: tfFlag = False
If tfFlag = True Then
Const Const1 = 1
Else
Const Const1 = 2
End If
Debug.Print Const1
End Sub
Гуглить пытался, но увы. И да, про переменные я в курсе, но именно возникла необходимость в константе. Скорее всего, что моё извращение недопустимо и чтобы не простаивать я пойду другим путём, но было бы не плохо услышать мнение экспертов и светом ваших знаний развеять тьму моего невежества. Спасибо.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Здравия, уважаемые форумчане. Думаю, вопрос достаточно полно освещён в названии темы. Немного проиллюстрирую его. Допустим у нас имеются два одномерных массива и мы как-то сравниваем/сопоставляем элементы одного массива с другим. Какой из следующих подходов будет более верным? ПЕРВЫЙ
Код
For i1 = LBound(arr1, 1) To UBound(arr1, 1)
For i2 = LBound(arr2, 1) To UBound(arr2, 1)
' что-то тут делаем
Next i2
Next i1
или ВТОРОЙ
Код
i2l = LBound(arr2, 1)
i2u = UBound(arr2, 1)
For i1 = LBound(arr1, 1) To UBound(arr1, 1)
For i2 = i2l To i2u
' что-то тут делаем
Next i2
Next i1
Спасибо. P.S. Как правило я предпочитал использовать второй вариант, но сегодня усомнился в его эффективности...
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Здравствуйте, уважаемые форумчане. Сегодня встретился с одним двумя интересными багомами в экселе. Начну со второго (файл прилагается) Первого бага не было - была моя невнимательность. Есть некий набор обозначений чего-либо:
набор сортировка в таблице
А АА АВ В ВС С СС
Обычная сортировка (А-Я) по этому набору проходит без вопросов, НО если этот набор разместить в строках сводной, то сортировка (А-Я) происходит почему-то так:
набор сортировка в сводной
ВС А АА АВ В С СС
Все символы кириллические - проверил, но вы можете перепроверить. От регистра не зависит - на строчных символах тоже самое наблюдается. На визуально похожем наборе в латинице всё адекватно сортируется как в таблице, так и в сводной. Наблюдается в Excel 2010 x64, 2003 x32. ОС windows 7 x64. Я не надеюсь получить ответ на свой вопрос, почему так происходит? Но не исключаю, что специалисты из Microsoft заглянут сюда и, возможно, дадут со временем ответ. А пока - предупреждён - вооружён. Спасибо всем за внимание. У модераторов прошу прощения, если название темы неконкретное. Буду рад, если кто-либо предложит более адекватное название.
Здравствуйте, уважаемые завсегдатаи и другие посетители форума. Интернет - это такая среда, где каждый волен поступать как знает. В том числе, волен выражать свои мысли и высказываться о том, что является для него важным в данный момент. Я понимаю, когда человек не русскоговорящий приходит на данный ресурс и просит о помощи на ломанном языке - это нормально и поправлять его не имеет смысла, да, и вообще мало кому нравится, когда его тычут носом в его ошибки даже, если это сделано из наилучших побуждений и в мягкой форме. Очепятки тоже бывает случается, когда торопимся и то, что мы хотим напечатать не совпадает с тем, что является результатом клацания пальцев по кнопкам клавиатуры. Либо у человека может быть дислексия. Но встречаются регулярно употребляемые слова с ошибками, которые уже примелькались и так и хочется их автору как-то намекнуть, что не стоит это слово так писать. Потому и создал данную тему, в которой предлагаю первой строкой показывать неправильно напечатанное слово или фразу, например, с частицей не, и к нему правильное написание с объяснением.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Всем здравия желаю. Моё сознание мухи не может спокойно реагировать на безтолковые названия тем, которые, как мне кажется, в последнее время что-то слишком часто стали появляться. По непонятной мне причине авторы апеллируют к тому, что не сильны в программировании/формулах/экселе. НО ПРИ ЧЁМ ТУТ ИНСТРУМЕНТ, ЕСЛИ ТЕБЕ НА СЛОВАХ НАДО ОБЪЯСНИТЬ ЛЮДЯМ ЧТО НЕ ПОЛУЧАЕТСЯ ИЛИ ЧТО НАДО ПОМОЧЬ СДЕЛАТЬ И КАК РЕЗЮМЕ ЗАДАЧИ - НАЗВАНИЕ ТЕМЫ??? Простите за капслок - накипело. Я уже молчу о том, что ТСу порой недостаёт вежливости в своём стартовом сообщении. Однажды уважаемый Z, на мой раздражённый тон посоветовал проходить мимо. Стараюсь придерживаться этого мудрого совета и пункта правил:
Цитата
4. Не рекомендуется 4.5. Самовольное модерирование. Т.е. когда некий участник форума, не являющийся модератором данного форума, делает замечания другим участникам.
Только это так сложно и так и тянет на колкий, резкий ответ или сухо процитировать правила. В дополнение обидно за модераторов, которые порой находясь в благодушном настроении (это моё субъективное представление, которое может не соответствовать действительности) не закрывают такую тему, а ставят в известность ТСа о том, что необходимо всё же приложить усилия серого вещества из черепной коробочки и в муках ума родить достойное название его, ТСа, темы. На что ТСы порой начинают кочевряжиться "ну, чё вы пристали - лучше помогите решить проМблем", "я не знаю как сформировать название - придумайте за меня" и т.д. и т.п.
Теперь вернусь к сути темы. Прошу в первую очередь ответить уважаемых администратора и модераторов на следующий вопрос. Стоит ли отвечать рядовым пользователям на подобные темы нарушая п.4.5. или необходимо пройти мимо и подключаться к теме в том случае, если ТС устранит замечание, которое будет исходить от модератора?
Не в праве никого ограничивать в выборе формы и тона ответа, только одна просьба, пожалуйста, не переходите на личности. Спасибо.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Здравствуйте, господа. Вынужден обратиться к живой аудитории за помощью, т.к. машинный поиск по сети мне не помог в решении возникшей ситуации (ничего толкового не нашёл). Пытаюсь установить на 2010 Excel (x64) пресловутую надстройку Power Query. Как только запускаю файл установки, то программа выдаёт следующее:
Цитата
Для Microsoft Power Query для Excel (x64) на этом компьютере требуется установка всех версий Microsoft Excel с возможностью программирования .NET. Переустановите на этом компьютере все версии Microsoft Excel с включенной возможностью программирования .NET.
И завершает работу без установки надстройки. Что делал: 1. Скачал и установил Microsoft .NET Framework v4.6.1 - не помогло. В реестре смотрел, что в системе установлены версии 2.0, 3.0, 3.5 и 4. 2. Сделал восстановление офиса (через панель управления установка и удаление программ) - не помогло. Полностью сносить офис не пытался, т.к. по времени затратно. (хотя и не исключаю, что окажется единственным возможным выходом из сложившейся ситуации, тогда ой...) Возможно из вас кто-либо сталкивался с подобной ситуацией и находил выход из неё, кроме переустановки офиса? Буду благодарен за любую оказанную помощь. Спасибо.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Здравствуйте, уважаемые форумчане. Возможно для вас это не новость, но для меня это оказалось подводным камнем, который впервые встретил на своём пути. По работе возникла необходимость сортировать таблицу по коду. Код мог состоять как из одних цифр, так и из смеси цифр и букв. Одни коды из цифр были введены как числа, а другие, как текст (в т.ч. с впереди стоящим(и) нулём(ями)). Для меня сюрпризом оказалось то, что код содержащий среди цифр одну латинскую букву "E" при проверке на является ли числом или нет давал либо положительный, либо отрицательный результат. Особо разбираться не стал с этим вопросом, т.к. исходя из имеющихся знаний понял, что в первом случае код, например, "0123E123", конвертировался в 1,23E+125, а в другом текстом и оставался, т.к. для числа конвертируемое значение было слишком большим, например, "0123E999".
Допустим, имеются два кода текстом: 1) 0123E123 2) 0123E999 При конвертации в число формулами получим, соответственно: -- (двойное отрицание) = 1,23E+125 и #ЗНАЧ! ВБА: isnumeric() = True и False -- (двойное отрицание) = 1,23E+125 и ошибка "Overflow"
Рад был поделиться с вами своим наблюдением. Как говорится "предупреждён - вооружён". Успешной деятельности на поприще экселя вам.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Здравствуйте, уважаемые жители и гости форума "Планета EXCEL". Прошу Вас оказать содействие по обретению гармонии с самим собой, путём наставления на путь истинный для решения насущного вопроса: "относительно активной ячейки получить имя/название столбца умной таблицы" Возможно я и плохо искал, но решение было такое обретено:
Код
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
MsgBox ActiveCell.ListObject.HeaderRowRange.EntireRow.Resize(, 1).Offset(, ActiveCell.Column - 1).Value
On Error GoTo 0
End Sub
Только оно заставляет меня чувствовать себя в роли проктолога, который пытается лечить гланды. Возможно есть более штатный и красивый способ обрести искомое? Пример прилагается. Спасибо за помощь и внимание с вашей стороны. И простите, если что не так сказал/сделал.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Здравствуйте, уважаемы жители планеты Excel. Прошу Вашего совета, т.к. устал биться головой об стену. В прилагаемом файле есть горизонтальный диапазон ячеек (B1:M1) с именами месяцев. Пытаюсь посредством макроса создать проверку вводимых данных, допустим в диапазоне B3:M3, по следующему условию: целое число, между, минимум: 1, максимум: день конца соответствующего месяца. Вручную сделал запросто. (см. диапазон B2:M2) Но макросом, как ни бьюсь, ничего не получается - ругается на второе условие формулой. Макрорекордер записал формулы кириллицей, но при воспроизведении сего шедевра сбой на строке с добавлением условий проверки.
Скрытый текст
Код
Sub Макрос1()
'
' Макрос1 Макрос
'
'
With Selection.Validation
.Delete
.Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="1", Formula2:= _
"=ДЕНЬ(КОНМЕСЯЦА(ДАТАЗНАЧ(""1-""&ЛЕВБ(B$1;3));0))"
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
End Sub
Отдельно записанная формула работает без проблем. =ДЕНЬ(КОНМЕСЯЦА(ДАТАЗНАЧ("1-"&ЛЕВБ(B$1;3));0)) Перевёл формулу на аглицкий - результат тот-же - сбой.
Скрытый текст
Код
Sub jjj()
With Range("B3:M3").Validation
.Delete
.Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:=1, Formula2:= _
"=DAY(EOMONTH(DATEVALUE(""1-""&LEFTB(R1C,3)),0))" _
'"=ДЕНЬ(КОНМЕСЯЦА(ДАТАЗНАЧ(""1-""&ЛЕВБ(B$1;3));0))" _
'
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
Эта же формула на аглицком записывается макросом в ячейку без проблем.
Здравия желаю, уважаемые жители сего прекрасного форума. Поиск по данной теме ничего не дал, посему, решил сам что-то сделать. Результат моих потуг прилагается.
Скрытый текст
Код
Option Explicit
Option Compare Text
Dim bWbProtOn As Boolean ' c
Sub twb_protect()
ThisWorkbook.Protect Structure:=True, Windows:=False ', Password:=strPASSWORD
End Sub
Sub twb_unprotect()
ThisWorkbook.Unprotect ' Password:=strPASSWORD
End Sub
Sub chk_twb_struct_prot_on()
Dim lShIndex&
With ThisWorkbook
lShIndex = .ActiveSheet.Index
On Error Resume Next
.Sheets.Add after:=.ActiveSheet ' c
On Error GoTo 0
bWbProtOn = lShIndex = .ActiveSheet.Index
If Not bWbProtOn Then Application.DisplayAlerts = False: _
.ActiveSheet.Delete: Application.DisplayAlerts = True
Debug.Print bWbProtOn
End With
End Sub
Sub test_twb_struct_prot()
Call twb_protect
Call chk_twb_struct_prot_on
Call twb_unprotect
Call chk_twb_struct_prot_on
End Sub
Запустите на выполнение test_twb_struct_prot Но я не доволен результатом, т.к. чтобы выяснить включена ли защита структуры книги, приходится пытаться добавить пустой лист и при успехе удалить его, что мной воспринимается окольным путём по лечению гланд. Возможно есть штатный способ узнать о состоянии защиты структуры книги, наподобие проверки вкл. аль нет защита листа:
Код
MsgBox ActiveSheet.ProtectContents
Заранее выражаю свою глубокую признательность за любой ответ по данному вопросу. Всем добра.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Всем хорошего самочувствия и продуктивного бытия! В продолжение SQL эпопеи решил, что раз динамический диапазон SQL не "любит", то передам ка я в диапазон статичный (в файле-примере, его зовут "таб_дан") всю область от и до 1048576 строки. А не тут то было! Как только нижняя строка диапазона опускается ниже 65536 строчки, то именованный диапазон перестаёт быть видимым для запроса. Приведу параметры запроса:
SELECT таб_дан.`Документ продажи`, таб_дан.Номенклатура, таб_дан.Код, таб_дан.`Сумма продажи в грн`, таб_дан.`Количество (в базовых единицах)` FROM таб_дан таб_дан WHERE (таб_дан.`Количество (в базовых единицах)`>0)
Уважаемые знатоки прекрасной штуки по имени SQL , подскажите пожалуйста, какой драйвер может "скушать" весь лист до самого конца и не "подавиться"? =)) (и если Вас не затруднит, то подскажите где узнать/почитать про то, какие драйвера БД прописаны в системе, какие строки подключения к ним и каковы особенности работы с ними, в частности, особенности синтаксиса, ограничения по объёму обрабатываемых данных) Файл прилагаю. На Вашу мудрость, терпимость и снисходительность уповаю. Спасибо.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Здравия желаю уважаемые жители Планета Excel. Бью челом и уповаю на Вашу мудрость и снисходительность. Три дня и три ночи бьюсь с окаянной задачей, а она не бьётся. Пытаюсь внутри одной книги (прилагается) сделать выборку с именованного динамического диапазона "таб_дан", который формируется на основе данных листа "данные", и выгрузить её на лист "выборка", но Microsoft Query не видит указанный именованный диапазон. Подскажите, пожалуйста, каким SQL запросом можно обратиться к именованному динамическому диапазону? (в первую очередь интересует вариант без использования макросов, если это возможно вообще) Мира и спокойствия всем и помогающим, и заглядывающим, и не заглядывающим.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Здравия желаю, уважаемые жители планеты Эксель. Пытаюсь начать использовать в макросах регулярные выражения и столкнулся с такой ошибкой: когда в шаблоне пытаюсь использовать символ с кодом 63 (Chr(63)). Для своей задачи я нашёл обходной путь (такой символ один в ячейке, потому исключал из обработки ячейки с длиной в один символ), но нерешённый вопрос не даёт покоя. Потому у меня вопрос, как можно использовать такие символы в регулярных выражениях? Функция для примера:
Код
Function jjj(s As String) As String
Set objRegExp = CreateObject("VBScript.RegExp")
' objRegExp.Pattern = "(?:(^(--|" & Chr(63) & ")|(-|\+))$)"
objRegExp.Pattern = "(?:(^(--)|(-|\+))$)"
jjj = objRegExp.Replace(s, "")
End Function
В задаче, если в ячейке "--" или символ 63, то игнорируем эти ячейки, если в конце содержимого ячеек "+" или "-" - то убираем из содержимого эти символы. Прошу быть снисходительными к моим попыткам формирования регулярных выражений. Для отладки регулярных выражений использовал данный ресурс. На нём регулярка из закомментированной строки отработала как надо. Выражаю всем свою глубокую благодарность не взирая на результат.
Изменено: JayBhagavan - 19 сен 2015 08:58:41(не отображалось изображение)
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Моё почтение, уважаемые форумчане. Мой вам земной поклон и пожелания здравствовать и процветать. Будьте добры, просветите невежду, почему макрос, использующий метод "Range.Find", срабатывает только один раз, если объявить переменную, в которую возвращается результат поиска, как "Range", а если оную не объявлять, то поиск отрабатывает полностью? Спасибо вам, мудрейшие.
поиск отрабатывает полностью
Код
Sub jjj_find_work()
Dim i&, Rng As Range
Set Rng = Worksheets(1).UsedRange
Set c = Rng.Find("find", LookIn:=xlValues)
If Not c Is Nothing Then
With c
firstAddress = .Address
i = 0
Do
i = i + 1
Set c = Rng.FindNext(c)
Loop While Not c Is Nothing And .Address <> firstAddress
End With
End If
MsgBox "finded: " & i
End Sub
поиск отрабатывает только один раз
Код
Sub jjj_find_not_work()
Dim i&, Rng As Range, c As Range
Set Rng = Worksheets(1).UsedRange
Set c = Rng.Find("find", LookIn:=xlValues)
If Not c Is Nothing Then
With c
firstAddress = .Address
i = 0
Do
i = i + 1
Set c = Rng.FindNext(c)
Loop While Not c Is Nothing And .Address <> firstAddress
End With
End If
MsgBox "finded: " & i
End Sub
Мира вам! Зачастую хочется делиться радостью, болью, весёлым, грустным. Если мы делимся негативным - нам становится легче. Если делимся светлым - то становится ещё светлей на душе. (то, чем мне порой хотелось бы поделиться, зачастую не вписывается в формат имеющихся тем, потому и создал эту тему... простите, если что ) Начнём?
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Здравия желаю, уважаемые. Видя постоянные замечания уважаемых Модераторов новичкам и не только, в моём воспалённом воображении возникли галлюцинации в виде следующих предложений: 1) При отправке сообщения на форум движок форума автоматом проверяет наличие пустых строк и удаляет их. (возможно ли?) 2) После регистрации нового виртуального лица (НВЛ) на форуме идёт жёсткий переход на прочтение правил форума (из которых выйти нельзя пока не нажмут или не отметят галочкой, что с правилами ознакомлен(а)), после идёт тестирование на знание правил форума, без прохождение которого НВЛ никуда более попасть не может (в смысле иные разделы форума будут недоступны/скрыты/невидимы) и только при 100% правильных ответах НВЛ допускается на форум с доступом ко всем темам. Понимаю, что, скорее всего, это из разряда фантастики, но всякая фантастика имеет тенденцию со временем воплощаться в жизнь. Всем ДобРа. Извините, если попусту отнял у Вас время.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Здравия желаю, уважаемые. Предисловие. Торговая компания развозит профильные товары как своим транспортом, так и наёмным. У руководства, в это не лёгкое время, стоит вопрос "где бы сэкономить?" Посему был озадачен поиском методик(и) расчёта эффективности автопарка. На данный момент. Несомненно, веду и буду продолжать вести поиск в глобальной сети Интернет, но пока набрёл на файл для расчёта себестоимости перевозки (скачал, ссылку на источник не сохранил, если надо - выложу), но это больше для перевозчиков интересно, а не для торгашей. Просьба. По жизни впервые сталкиваюсь с подобной задачей, потому прошу при желании и по-возможности просветить/направить на путь истинный по данной теме. Заранее выражаю свою благодарность за посильную помощь и прошу прощения у всех, у кого отнял драгоценное время. ПС Возможно тема сформулирована некорректно, не обессудьте, пожалуйста, ибо познания в ней нулевые и привожу почти дословный наказ начальника. ДобРа.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Здравствуйте, уважаемые форумчане. В редакторе VBA в настройках установлено Tools/Options/Editor Format/Font:=Courier New (Кириллический) Копипаст из редактора VBA приводит к такому результату:
Код
'ôóíêöèÿ âîçâðàùàåò
а подразумевается:
Код
'функция возвращает
Поиск данного сабжа привёл к старой теме на этой Планете, но данные в ней советы не привели к верному результату. Яндексирование привело к разным советам по перекодировке вообще какого-либо текста разными средствами, но решение сабжа мной не было обнаружено. (122 тыс. ответов, увы, не осилил) Неудобство не смертельное, можно обойти экспортом модуля в текстовый файл и из него уже копипастить, но, согласитесь, что это неудобно. (зачастую мы все стремимся к комфорту) Коль у кого будет более изящное решение, чем то, к которому прибегает ваш покорный слуга, будьте добры, если не в тягость - поделитесь, пожалуйста. Спасибо.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Прошу простить меня уважаемое сообщество, коль безполезной окажется сия тема, Но рискну изложить свои мысли. По ходу работы возникла необходимость сопоставить внутренние коды номенклатуры с кодами номенклатуры поставщика. В названии внутренней номенклатуры в конце зачастую указывается код номенклатуры поставщика. Потому необходимо было извлечь сию цифирь на свет божий в чистом виде по следующему условию: берутся из содержимого ячейки с конца только подряд идущие цифры до первого встречного символа НЕ цифры. Сгоряча имелось желание исторгнуть глас вопиющего о помощи, но устыдившись своей слабости в сим вопросе решил упорно до посинения пытаться сделать самостоятельно. Вот, что вышло:
Скрытый текст
Код
Function ЦифрыПодрядСКонцаСтроки(Адрес_Ячейки As Range)
'функция возвращает подряд идущие цифры с конца текста указанной ячейки
Dim theS As Variant, theR As Variant, theCh As Variant, thePosCh As Variant, i As Variant
Const theDigits = "0123456789" ' целевые символы
theS = Адрес_Ячейки.Value ' переменная с значением переданной ячейки
theR = "" ' переменная, в которой накапливается целевой результат
theCh = "" ' переменная, которая содержит в себе текущий итый символ
thePosCh = 0 ' переменная, в которую пишется положение текущего итого символа среди целевых
i = Len(theS) ' счётчик (в данном случае с конца сроки)
Do ' начало цикла
If i = 0 Then Exit Do ' если счётчик достиг нуля, то выход
theCh = Mid(theS, i, 1) ' итый символ
thePosCh = InStr(theDigits, theCh) ' позиция итого символа в целевых
If thePosCh = 0 Then Exit Do ' если достигли НЕ целевого символа, то выход
theR = theCh + theR ' накапливаем целевые символы из указанной ячейки
i = i - 1 ' уменьшаем счётчик на единицу
Loop ' конец цикла
ЦифрыПодрядСКонцаСтроки = theR ' возвращаем результат
End Function
Функция выполняет поставленную задачу, но сдаётся мне, что она не оптимальна в своей реализации. Возможно она кому пригодится, а возможно, кто добрым советом поможет сделать её оптимальнее, благодаря чему не только Ваш покорный слуга улучшит свои познания в ВБА. Спасибо.
Здравствуйте, уважаемые. Мои недельные усилия по унифицированию алгоритма "Индуктивный метод Разгуляева" (прогнозирование продаж) формулами экселя 2010 привели к частично работающей формуле. Источникрасчёта. В приложении расчёты из файла-оригинала с выше указанного сайта и за исходной таблицей формулы составленные мной (в столбце K итоговая формула, во всех дальнейших столбцах вспомогательные формулы, которые включены в основную, т.к. очень длинная формула получилась. Подскажите, пожалуйста, что не так в формуле МЕДИАНА(), если она возвращает нули, там, где, по идее, их не должно быть? Возможно я что-то упустил, то с удовольствием отвечу на все ваши уточняющие вопросы. Спасибо.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori
Здравствуйте. Поиск не дал ответа на искомый вопрос, но если я плохо искал, то прошу меня простить за мою невнимательность. Предыстория Ранее в экселе офиса ХР в панели инструментов для сводной таблицы был пункт меню "Отобразить страницы" (осуществляет вывод каждой страницы страничных полей сводной таблицы на отдельном листе книги). Вопрос В экселе офиса 2010 нет такого пункта меню (кнопки). Искал - не нашёл. Уважаемые знатоки, возможно вы подскажете аналог этой команды в экселе 2010 или её убрали и только макросом теперь можно обойтись?