Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Обоснование, почему беру другие заказы: Мои контакты переданы [реальному] заказчику. Напишет ли и когда — неизвестно.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
покажите, пожалуйста, канал в телеге, более популярный, чем этот сайт. И скажите, как вы определили, что он более популярный? Лично для меня, ЛЮБОЙ канал будет проигрывать сайту — чисто из-за формата. Одно дело, новости читать и совсем другое — копаться в темах, кодах и примерах файлов.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
bedvit: А про то, о чем ты говоришь - я без кода не понимаю.
1. отфильтруй диапазон 2. вставь в него массив размером с ВИДИМУЮ часть 3. сними фильтр 4. посмотри, вставилось ли 5. повтори всё с умной таблицей
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
bedvit: А может быть по другому? Работает так же, как и обычная вставка - вставляется в указанный диапазон, неважно скрыт он или нет. Штатная работает так же.
вы, молодой человек, путаете ВСТАВКУ в ячейки и ВЫГРУЗКУ массива. Твой инструмент гораздо ближе к ВЫГРУЗКЕ (практически ей и является), а у неё заполнение скрытых ячеек, как раз, не осуществляется.
И вообще — почему опять такое неуважение к конечным пользователям? Какого лешего нам опять нужно что-то додумывать и домысливать? Сложно написать "в отличие от обычной выгрузки массива на лист, НЕ игнорирует скрытые ячейки и успешно в них вставляет"???
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
bedvit: XlSet может помещать в ячейки только константы, а не формулы.
то есть, если в качестве очередного элемента массива будет "=СУММ(A1:A:5)", то так строкой и вставится? Думаю, последующее преобразование в реальную формулу не составит труда. Ну, или, тогда уж проще и быстрее использовать штатную Range().Formula = arr
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
evgeniygeo: Мне кажется, это поможет слегка популяризировать форум, т.к. после закрытия первых двух тем, не очень хочется даже пытаться создавать новую.
1. С популярностью у площадки всё в порядке 2. Если "ранимость" от указания на несоблюдение правил превосходит необходимость получения помощи, то добро пожаловать на менее популярные ресурсы для Excel/VBA типа Кибера. Там практически любая тема (пример) получит какую-никакую (про количество, а не качество помогающих) помощь. 3. Далеко не всегда темы сразу закрываются.
Цитата
evgeniygeo: я бы предложил использовать не предупреждения, а количество созданных тем (думаю, что это не сложно отслеживать), но может быть можно использовать эту функцию (я первый раз ее сегодня заметил)?
Предупреждения и так не используются — в остальном предлагайте, сколько душе угодно, но далеко не факт, что оно будет реализовано
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Вводите как обычную функцию, а не массивную с фигурными скобками
Код
'Option Base 1
Option Explicit
'Option Private Module
'==================================================================================================
Function ConcatUniq(xRg As Range, xChar As String) As String
Dim xCell As Range
Dim x, s$, VT&, xDic As Object
Set xDic = CreateObject("Scripting.Dictionary")
For Each xCell In xRg
VT = VarType(xCell.Value)
If ((VT = vbEmpty) Or (VT = vbError)) Then GoTo nx
s = xCell.Value
If ((s = "") Or (s = "1")) Then GoTo nx
x = xDic(s)
nx: Next xCell
if (xDic.Count <> 0) Then ConcatUniq = Join$(xDic.Keys, xChar)
Set xDic = Nothing
End Function
'==================================================================================================
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Я не против удаления. Флёр названия мне тоже уже не нравится.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
TestSelection сортирует выделенный диапазон по 1му столбцу на месте
Код
Option Base 1
Option Explicit
Option Private Module
'==================================================================================================
Sub PRDX_SortRecur_WithInd(aV(), aI() As Long, LBnd&, UBnd&)
Dim i&, j&, n&, x, y
i = LBnd: j = UBnd: x = aV((LBnd + UBnd) \ 2)
Do
While (aV(i) < x): i = i + 1: Wend
While (x < aV(j)): j = j - 1: Wend
If (i <= j) Then
y = aV(i): aV(i) = aV(j): aV(j) = y
n = aI(i): aI(i) = aI(j): aI(j) = n
i = i + 1: j = j - 1
End If
Loop Until (i > j)
If (LBnd < j) Then PRDX_SortRecur_WithInd aV, aI, LBnd, j
If (i < UBnd) Then PRDX_SortRecur_WithInd aV, aI, i, UBnd
End Sub
'==================================================================================================
Function PRDX_Sort_Arr2D_ByIndexes(a2D, aInd() As Long) As Variant()
Dim aNew(), i&, rNew&, c&
ReDim aNew(UBound(a2D, 1), UBound(a2D, 2))
For i = LBound(aInd) To UBound(aInd)
rNew = rNew + 1
For c = 1 To UBound(a2D, 2)
aNew(rNew, c) = a2D(aInd(i), c)
Next c
Next i
PRDX_Sort_Arr2D_ByIndexes = aNew
End Function
'==================================================================================================
Function PRDX_Sort_Arr2D(a2D, Optional ByVal nCol& = 1) As Variant()
Dim x, aVal(), aInd&(), r&, c&
ReDim aVal(UBound(a2D, 1)): ReDim aInd(UBound(aVal))
For r = 1 To UBound(aInd)
aInd(r) = r: aVal(r) = a2D(r, nCol)
Next r
PRDX_SortRecur_WithInd aVal, aInd, 1, UBound(aInd)
PRDX_Sort_Arr2D = PRDX_Sort_Arr2D_ByIndexes(a2D, aInd)
End Function
'==================================================================================================
'==================================================================================================
'==================================================================================================
Private Sub TestSelection()
Dim rng As Range
Dim x
Set rng = Selection: If (rng.Areas.Count <> 1) Then Exit Sub
x = rng.Value: If Not IsArray(x) Then Exit Sub
rng.Value = PRDX_Sort_Arr2D(x, 1)
End Sub
'==================================================================================================
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Evgenyy: Интересно мнение форумчан: сайт умрёт или нет? Ничего нового, интересного не публикуется, ни какого развития не наблюдается.
Мне кажется, что тема не та. Эта — о другом, всё-таки. Новое публикуется (Приёмы тут и новые функции у Excel). Развитие ЧЕГО вы хотите наблюдать? У Excel оно происходит, у форума — не особо (только хуже с каждым обновлением), но какое вообще может быть развитие у форума — не представляю…
Цитата
Evgenyy: За прошедший год, как на сайте, так и на форуме не приобрел для себя новых знаний. Ничего нового, интересного, каких то фишек, лайфхаков. Может Excel исчерпал себя?
ну тут прям классика — если вы ничему не научились, то это только ваша проблема/задача/забота. При чём тут вообще программа? VBA хрен знает сколько не развивается, а я продолжаю что-то новое для себя открывать. К тому же, может, вы просто "взяли всё, что нужно" и больше вам не надо — соответственно, вы и не замечаете этого. Ну и, конечно, эффект плато.
Цитата
seggi: Прямо удивительно, почему вдруг народ перестал Excel интересоваться, за последние два года ведь ничего не изменилось.
ну, во первых, не перестал и даже не стал меньше, по моим наблюдениям. Напомню, что это мелкомягкие "кинули" пользователей, а не наоборот. В связи с этим, были предприняты попытки от такой токсичной зависимости — мне тут всё понятно. К тому же, запрет на использование офиса распространяется только на какие-то там ключевые области, а не на всё. Остальное — самоцензура. Думаю, немало маленьких и средних компаний вполне могут остаться на коробочной версии без каких-либо проблем для себя.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Как определить, отключён ли Application.StatusBar (штатное состояние) или в нём написано "FALSE", How to distinguish between «Application.StatusBar = False» and «Application.StatusBar = "False"»
Выяснилось, что иногда StatusBar может возвращать булево значение (в строке) по локали. Теперь так делаю.
Код
Function PRDX_StatusBar_IsBusy_ByStrVal(ByVal ASB$) As Boolean
ASB = LCase$(ASB)
If ((ASB = "false") Or (ASB = "ложь")) Then Exit Function
PRDX_StatusBar_IsBusy_ByStrVal = True
End Function
'--------------------------------------------------------------------------------------------------
Function PRDX_StatusBar_IsBusy() As Boolean
PRDX_StatusBar_IsBusy = PRDX_StatusBar_IsBusy_ByStrVal(Application.StatusBar)
End Function
'--------------------------------------------------------------------------------------------------
Sub PRDX_StatusBar_Set(ASB$)
If PRDX_StatusBar_IsBusy_ByStrVal(ASB) Then Application.StatusBar = ASB Else Application.StatusBar = False
End Sub
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Kelbrock, здравствуйте. Для работы в ЛЮБОМ Excel можно сделать свою надстройку с формой поиска. На коммерческой основе могу сделать. Также, можете поискать темы (в том числе и у меня) по запросу "форма с поиском" — если хотите сделать сами.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
БМВ: Если нужно скорость поднять, то усложняй код, зато будет быстрее, а может и не будет.
в плане ветвления — будет. Я ставлю самые частые условия на первые места проверки и использую бинарное ветвление для самых сложных случаев.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Dimafpk, спасибо за положительный отзыв! Качество решения напрямую зависит от понимания задачи обеими сторонами. Вы предоставили исчерпывающий пример и получили недорогое и качественное решение для своей задачи
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
при первом True всё выражение в скобках должно вернуть True СРАЗУ же. Вообще изи …
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
БМВ: так как выражения могут быть разные , включая NOT(условие1 OR условие2) и более сложные , то разбирать и оптимизировать фантазию прогера компилятор не должен.
при ВЫПОЛНЕНИИ 1го условия, уже неважно, что после OR, потому что оно 1е выполнено. Не думаю, что это невозможно описать алгоритмом. Функция Iif() тоже вычисляет ОБА исхода и хрен пойми, зачем она это делает …
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Nat3577, здравствуйте Потому что они иначе написаны — не все символы совпадают. Детали смотрите сами. Можете скопировать с Лист2 на Лист3 то, что не нашлось и оно найдётся.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Alex_ST: Вы серьёзно считаете, что предлагаемые Вами всем давно известные "телодвижения" сделать проще, чем выделить нужный "искалеченный" при экспорте диапазон и нажать одну кнопку вызова макроса?
1. "всем давно известные" — в корне ошибочное заявление. Форумов бы не было будь оно так. 2. "проще, чем выделить … диапазон и нажать одну кнопку вызова макроса". По сути, мой вариант это 2 нажатия кнопки + ввод одного символа разделителя. Не сильно сложнее, если кнопка с макросом уже есть, а, учитывая сколько всего нужно пользователю сделать, чтобы "макрос" у него "появился" (особенно, с кнопкой), то гораздо проще. 3. В вашем коде есть несколько нюансов: он вывалится в ошибку на большом количестве областей (только видимые из отфильтрованного диапазона, например) + вы принудительно в конце выставляете автопересчёт, хотя у пользователя может стоять ручной.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
sokol92: Кстати, в LibreOffice много языков программирования (Basic, Python, Java, ...)
я, собственно, только его вижу в качестве возможного аналога для перехода
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄