Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 37 След.
Автоматизация ввода времени в ячейку
 
Еще UDF
Код
Function MinNagr(Время_Наиб_Нагр$) As String
Dim Ar1, Ar2, ii&
    Ar1 = Split(Время_Наиб_Нагр, "-")
    For ii = LBound(Ar1) To UBound(Ar1)
        Ar2 = Split(Trim(Ar1(ii)), ";")
        If UBound(Ar2) = 0 Then
If Ar2(0) = "23:59:59" Then Exit For
If Ar2(0) <> "00:00:00" And MinNagr = "" Then
MinNagr = "00:00:00" & "-" & Format(TimeValue(Ar2(0)) - 1 / 86400, "hh:mm:ss")
Else
MinNagr = MinNagr & ";" & Format(TimeValue(Ar2(0)) + 1 / 86400, "hh:mm:ss") & "-" & "23:59:59"
End If
        Else
MinNagr = MinNagr & ";" & Format(TimeValue(Ar2(0)) + 1 / 86400, "hh:mm:ss") & "-" & Format(TimeValue(Ar2(1)) - 1 / 86400, "hh:mm:ss")
        End If
    Next ii
End Function
Автоматизация ввода времени в ячейку
 
Photavit
Цитата
можете выделить в макросе куда вставить номера ячеек или текс из моего примера, макрос не запускается ...
Это не совсем макрос а UDF пользовательская функция. См файл
Ускорение расчета путем отказа от использования Select и расчет внутри макроса вместо расчета формулой
 
andypetr Зачем  вы сразу все секреты выкладываете. В одной теме по одному надо. :D  
Ускорение расчета путем отказа от использования Select и расчет внутри макроса вместо расчета формулой
 
Здравствуйте От Select надо отказываться, но правильно. Вы переделали на цикл по всем ячейкам, поэтому плохо получилось. Попробуйте так
Код
Sub aaaвв()
Range("P4").AutoFill Destination:=Range("P4").Resize(Range("A4").End(xlDown).Row - Range("P4").Row + 1) 'растянуть формулу
    Calculate 'пересчитать
With Range(Range("P5"), Range("P5").End(xlDown))
.Copy        'выделить вниз
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
              :=False, Transpose:=False 'вставить только значения
End With
End Sub
Символы из одной ячейки перенести в отдельные ячейки и изменить, какйю формулу (или макрос) применить
 
Еще пару формул
Код
=ЕСЛИ((ПСТР($A2;СТОЛБЕЦ(A2);1)= "+");1;0)
Код
=Ч(ПСТР($A2;СТОЛБЕЦ(A2);1)="+")
Символы из одной ячейки перенести в отдельные ячейки и изменить, какйю формулу (или макрос) применить
 
Здравствуйте Макрос для активной ячейке. Справа от нее будет выведен результат
Код
Sub enstaralfdh()
Dim Arr, ArByt() As Byte
ReDim Arr(VBA.Len(ActiveCell) - 1)
ArByt = VBA.StrConv(ActiveCell, vbFromUnicode)
For i = 0 To UBound(ArByt)
If ArByt(i) = 45 Then ArByt(i) = 48
If ArByt(i) = 43 Then ArByt(i) = 49
Arr(i) = VBA.Chr(ArByt(i))
Next
ActiveCell(, 2).Resize(, UBound(ArByt) + 1) = Arr
End Sub
Не удаётся разорвать внешние связи с файлом
 
lectep
Цитата
Я десятки раз пытался разорвать эту связь. У меня на компьютере не работает...
Не удивляйтесь у меня почему то тоже не получается разорвать связь.Видимо Sanja какой то шаманский заговор знает или от офиса зависит.
Формирование списка с уникальными значениями
 
Jack Famous Что то я не догоняю какая разница.. Недели две назад сравнивал работу, сейчас еще раз проверил. Никакой разницы нет в работе в трех вариантах записи Application.WorksheetFunction.Trim, WorksheetFunction.Trim, Application.Trim не нашел. Во всех случаях получается функция рабочего листа. Видимо эксель как то определяет, что это функция рабочего листа. Ведь эксель как то различает функцию Mid и оператор Mid, хотя у них 3 аргумента и все одинаковые. Хотя в принципе конечно лучше писать полностью Application.WorksheetFunction.Trim, но это на уровне подсознания не понятно почему. Вот с Range и Cells понимаю, где надо писать объекты перед ними.
Подсчёт количества обучаючихся на оценки 4 и 5 с помощью формул, Подсчёт количества обучаючихся на оценки 4 и 5 с помощью формул
 
АlехМ Ну как можно забыть как работает триггер. (В принципе без разницы на триоде,тетроде, пентоде, биполярном или полевом транзисторе)

P.S. Хотя уже не все помню. Названия всех сеток у ламп забыл.
Изменено: Евгений Смирнов - 06.05.2024 18:48:01
узнать код цвета ярлычка страницы
 
здравствуйте
john22255 По моему у вас в коде из сообщения №1 сразу ошибки. ColorIndex это 56 цветов от 1 до 56. Color это значение цвета типа Long по моему от 0 до 16777215. ColorIndex не может быть 65536.
P.S По крайней мере так было в старых версиях. В новых может что-то изменилось.
Изменено: Евгений Смирнов - 06.05.2024 18:36:22
[ Закрыто] Помощь новичку
 
Kkast Надо прочитать здесь
Подсчёт количества обучаючихся на оценки 4 и 5 с помощью формул, Подсчёт количества обучаючихся на оценки 4 и 5 с помощью формул
 
Вот  и зачем я несколько статей прочитал про функцию МУМНОЖ надо было немного подождать и АlехМ все бы объяснил гораздо быстрее.  :D
flyymann
Цитата
а в моих интересах её рассказать преподавателю, это моё практическое задание
Надо надеется на лучшее, что ваш преподаватель продвинутый и тоже на этом сайте просматривает темы. Тогда вам не придется объяснять как формула работает., он сам сообщение от АlехМ прочитал.  :D  
Поиск ячейки по условию, присвоение значения, и далее через каждые 36 ячеек присваивать такое же значение
 
Все таки макрос быстрее писать, чем формулу 5 минут.
Код
Sub enstaralrt()
Dim DatN, Per&, i&, Sh1 As Worksheet, Rg1 As Range
Set Sh1 = ActiveWorkbook.ActiveSheet
DatN = Sh1.Range("B6"): Per = Sh1.Range("B8")
Set Rg1 = Sh1.Cells.Find(DatN, , xlFormulas, xlWhole, xlByRows)
If Rg1 Is Nothing Then Exit Sub
For i = 0 To (Rg1.End(xlToRight).Column - Rg1.Column) \ Per
Rg1.Offset(1, i * Per) = "Новый"
Next i
End Sub
Проставить зелёный треугольник во всех ячейках, Проставить зелёный треугольник во всех ячейках
 
DI MAN Хорошее решение.
P.S. Только ТС видимо это больше не интересует. Ни ответа ни привета. :D  
Изменено: Евгений Смирнов - 06.05.2024 09:04:23
Поиск ячейки по условию, присвоение значения, и далее через каждые 36 ячеек присваивать такое же значение
 
Здравствуйте Разбирался с формулой Павел \Ʌ/ и как ни странно даже удалось кое что сочинить.
Код
=ЕСЛИ(ЕСЛИ(ЕОШ(РАЗНДАТ($B6;B2;"m")/$B$8);0,5;РАЗНДАТ($B6;B2;"m")/$B$8)=ЦЕЛОЕ(ЕСЛИ(ЕОШ(РАЗНДАТ($B6;B2;"m")/$B$8);0,5;РАЗНДАТ($B6;B2;"m")/$B$8));"Новый";"")
Код
=ЕСЛИ(ЕОШИБКА(1/(ОСТАТ(РАЗНДАТ($B6;B2;"m");$B8)=0));"";"Новый")
Изменено: Евгений Смирнов - 05.05.2024 23:18:47
Проставить зелёный треугольник во всех ячейках, Проставить зелёный треугольник во всех ячейках
 

В принципе и ручками можно довольно быстро преобразовать число в текст. Для данного файла примера

В ячейке В1 записывает апостроф

В ячейке В2 пишем формулу =$B$1&A2

Протягиваем формулу вниз

Выделяем диапазон с формулами

Нажимаем копировать

Нажимаем спецВставка – Значения

Все в столбце B будут числа в текстовом формате.

Формирование списка с уникальными значениями
 
LKN
Цитата
Уточнение по коду - вызов функции удаления пробелов VBA.Trim обязательно делать с полным указанием (Application.Trim/Application.WorksheetFunction.Trim)? Вроде и без них - работает?
Application.Trim/ и Application.WorksheetFunction.Trim это одно и тоже функция СЖПРОБЕЛЫ рабочего листа.  Для функции рабочего листа обязательно писать  Application.
VBA.Trim это функция  VBA удаление пробелов слева и справа здесь не обязательно писать VBA впереди.
По результату работы они немного различны.  
Формирование списка с уникальными значениями
 
Здравствуйте
Код
Sub enstaraldsfg()
Dim Rg1 As Range, col1 As New Collection, Txt$, i&, j&, Tp1, Arr1
Set Rg1 = ActiveWorkbook.ActiveSheet.Cells(1).CurrentRegion
Arr1 = Rg1.Value
On Error Resume Next
For i = 2 To UBound(Arr1)
    Tp1 = VBA.Split(Arr1(i, 1), ";")
        For j = 0 To UBound(Tp1)
            col1.Add VBA.Trim(Tp1(j)), VBA.Trim(VBA.CStr(Tp1(j)))
         Next j, i
On Error GoTo 0
For i = 1 To col1.Count
If i = 1 Then Txt = col1(i) Else Txt = Txt & "; " & col1(i)
Next i
Rg1.Parent.Range("C1") = Txt
End Sub
Изменено: Евгений Смирнов - 05.05.2024 12:28:49
Проставить зелёный треугольник во всех ячейках, Проставить зелёный треугольник во всех ячейках
 
БМВ
Цитата
простыми действиями в том же столбце не выйдет.
Кнопочку нажать не сложно. Макрос для выделенного диапазона
Изменено: Евгений Смирнов - 05.05.2024 11:13:06
Заполнение ячеек в графике отпусков, Макрос по заполнению линейного графика отпусков
 
Странно почему утром хочется написать побольше и длиннее. Можно ведь покороче
Код
Sub enstaralfh()
Dim Arr1, nRow&, i&, Sh2 As Worksheet, Rg1 As Range
Arr1 = ThisWorkbook.Worksheets(1).Cells(1).CurrentRegion
Set Sh2 = ThisWorkbook.Worksheets(2)
Application.ScreenUpdating = False
    For i = 1 To UBound(Arr1)
    nRow = Sh2.Cells.Find(Arr1(i, 4), , xlValues, xlWhole).Row
    Set Rg1 = Sh2.Cells.Find(Arr1(i, 2), , xlFormulas, xlWhole)
Sh2.Cells(nRow, Rg1.Column).Resize(, VBA.CLng(Arr1(i, 3)) - VBA.CLng(Arr1(i, 2)) + 1) = "a"
    Next i
End Sub
Подсчёт количества обучаючихся на оценки 4 и 5 с помощью формул, Подсчёт количества обучаючихся на оценки 4 и 5 с помощью формул
 
АlехМ Оказывается можно еще немного изменить формулу, но видимо без  МУМНОЖ красиво не получится. Я пытался через векторную форму ИНДЕКС, но ничего у меня не получилось. По другому написал, но некрасиво и длинно.
Изменено: Евгений Смирнов - 04.05.2024 13:16:17
Заполнение ячеек в графике отпусков, Макрос по заполнению линейного графика отпусков
 
Здравствуйте Так хотели. С символом для вставки толком не разобрался, но думаю сами разберетесь. Судя по файлу вы не новичок в эксель и VBA.
Код
Sub enstaralfgh()
Dim Arr1, Tp1, nRow&, i&, j&, Dic1, Sh2 As Worksheet
Arr1 = ThisWorkbook.Worksheets(1).Cells(1).CurrentRegion
Set Sh2 = ThisWorkbook.Worksheets(2)
Application.ScreenUpdating = False
Set Dic1 = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(Arr1)
        If Not Dic1.Exists(Arr1(i, 4)) Then Dic1.Add Arr1(i, 4), New Collection
        Dic1(Arr1(i, 4)).Add VBA.CLng(Arr1(i, 2))
        Dic1(Arr1(i, 4)).Add VBA.CLng(Arr1(i, 3))
    Next i

    For Each Tp1 In Dic1.Keys()
    nRow = Sh2.Cells.Find(Tp1, , xlValues, xlWhole).Row
        For i = 2 To Dic1(Tp1).Count Step 2
            For j = Dic1(Tp1)(i - 1) To Dic1(Tp1)(i)
    Sh2.Cells(nRow, Sh2.Cells.Find(VBA.CDate(j), , xlFormulas, xlWhole).Column) = "a"
    Next j, i, Tp1
End Sub
проблема с выводом максимального значения массива
 
Здравствуйте Да странная картина, не хочет эксель сам изменять тип данных. Функция Split возвращает массив Variant/String. Как одним оператором изменить тип данных массива не знаю, только через цикл с доп переменной.
Код
    W = Split("250x300", "x")
    ReDim ZZ(UBound(W))
    For i = LBound(W) To UBound(W)
      ZZ(i) = CDbl(W(i))
    Next i
    Debug.Print Application.Max(ZZ)
Формат ячейки
 
На скрине скорее всего текстовый формат. Перед числом в ячейке поставьте апостроф. Или в дополнительных форматах выберите табельный номер или почтовый индекс
Макрос по поиску повторяющих значений и вывода их в таблицу, Исправить Макрос по поиску повторяющих значений и вывода их в таблицу
 
User2616
Цитата
При варианте вводе слова "Отгрузка" макрос должен найти 50 значений и скопировать 50 строк в rngNew, или я ошибаюсь?
Поиск может быть на полное соответствие или содержит а также с учетом регистра и без учета регистра. (Это также как в стандартном инструменте поиск и в автофильтре) 1 вариант поиск содержит 2 вариант на полное соответствие. Оба варианта с учетом регистра.
Подсчёт количества обучаючихся на оценки 4 и 5 с помощью формул, Подсчёт количества обучаючихся на оценки 4 и 5 с помощью формул
 
Павел \Ʌ/
Цитата
С какой целью интересуетесь? )
Хочу сам немного научиться писать формулы, пока плохо получается, поэтому в некоторых темах пытаюсь разобраться как  работает формула ну и желательно смотреть какие могут быть еще варианты.
Подсчёт количества обучаючихся на оценки 4 и 5 с помощью формул, Подсчёт количества обучаючихся на оценки 4 и 5 с помощью формул
 
Неужели больше вариантов нет, без новомодных функций и доп столбцов, кроме варианта Serg091. Вот UDF легко написать, а формулу видимо сложно.
Переместить макросом столбцы из одного листа в другой с заменой расположения
 
Здравствуйте Еще вариант
Код
Sub enstaralgg()
Dim Rg1 As Range, Sh2 As Worksheet, i&, kRow&: Const Chag% = 4
    Set Rg1 = ActiveWorkbook.ActiveSheet.Cells(1).CurrentRegion
    Set Sh2 = ActiveWorkbook.Worksheets("ИТОГ")
kRow = Rg1.Rows.Count: Application.ScreenUpdating = False: Sh2.Cells.Clear
Rg1.Cells(1, 1).Resize(kRow, Chag).Copy Sh2.Cells(1)
    For i = 1 + Chag To Rg1.Columns.Count Step Chag
    Rg1.Cells(1, i).Resize(kRow, Chag).Copy Sh2.Cells(Sh2.Rows.Count, 1).End(xlUp)(2)
    Next i
End Sub
счет количества я ячейке, подсчет количества штук я ячейке
 
БМВ и МатросНаЗебре зря вы переживали надо ли решение ТС. Человек просто еще не все решения попробовал, и не может решить какое лучше. :D
Видимо ТС больше нравиться UDF, переделал макрос.
Код
Function PodKol(Txt$, Optional OsnRaz$ = ",", Optional DopRaz$ = "-") As Long
Dim Tp1, Tp2, j&
    Tp1 = VBA.Split(Txt, OsnRaz)
        For j = 0 To UBound(Tp1)
            Tp2 = VBA.Split(Tp1(j), DopRaz)
            PodKol = PodKol + Tp2(UBound(Tp2)) - Tp2(0) + 1
         Next j
End Function
Сводная таблица. Сохранение шаблона, Создать шаблон сводной таблицы
 
Здравствуйте!
Ma_Ri
Цитата
(Даже не верю, что я это пишу...в макросах дилетант..
И я тоже не верю. Ущипните меня наверно это сон. :D

Ma_Ri может быть в этой строке не обязательно использовать On Error Resume Next
Код
On Error Resume Next: ws.ShowAllData: On Error GoTo 0
А записать так
Код
If ws.FilterMode Then ws.ShowAllData
Ссылку tbl используете один раз  в коде. Может она не нужна, и просто написать так
Код
ws1.ListObjects(1).DataBodyRange.Delete
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 37 След.
Наверх