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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 36 След.
Поиск определенных слов из 2-ух столбцов в 3-ем столбце
 
Александр Тоннов Здравствуйте Возможно так, если правильно понял
Код
Sub enstaralfdh()
Dim Rg1 As Range, Rg2 As Range, Rg3 As Range, i&, j&, Tp1, Tp2
Const Raz$ = "* - *", TK$ = " тК ", ZvTKZv$ = "*тК*", Zv$ = "*"
Set Rg1 = Range("B1:C11")
Set Rg2 = Range("F1:F13")
Set Rg3 = Range("A1:A11")
ReDim Tp2(1 To Rg1.Rows.Count)
For i = 2 To Rg1.Rows.Count
If Rg1.Cells(i, 2) Like ZvTKZv Then
    If Rg1.Cells(i, 2) Like Raz Then
        Tp1 = VBA.Split(Rg1.Cells(i, 2), TK)
        For j = 2 To Rg2.Cells.Count
        If Rg2.Cells(j, 1) Like Zv & Tp1(1) & Zv Then Tp2(i) = i: Exit For
        Next j
    Else
        Tp1 = VBA.Split(Rg1.Cells(i, 2), TK)
        For j = 2 To Rg2.Cells.Count
        If Rg2.Cells(j, 1) Like Zv & Tp1(1) & Zv Then Tp2(i) = i: Exit For
        Next j
        
        If Rg1.Cells(i, 1) Like ZvTKZv Then
        Tp1 = VBA.Split(Rg1.Cells(i, 1), TK)
        For j = 2 To Rg2.Cells.Count
        If Rg2.Cells(j, 1) Like Zv & Tp1(1) & Zv Then Tp2(i) = i: Exit For
        Next j
        End If
    End If
End If
Next i
For i = 1 To UBound(Tp2)
If Tp2(i) > 0 Then Rg3.Cells(i, 1).Interior.Color = vbYellow
Next i
End Sub
Сумма в строке по диапазону условий столбца
 
EugeniaArtel Здравствуйте так надо
Код
=СУММЕСЛИМН($B6:$H6;$B$5:$H$5;">="&B$17;$B$5:$H$5;"<="&B$18)
Изменено: Евгений Смирнов - 19.04.2024 19:32:35
VBA. Подсчет количества строк по условию
 
sv_ispu Здравствуйте Такую сложную функцию без 100гр никак не напишешь
Код
Function Counrows(Яч1 As Range, Яч2 As Range) As Double
Dim ZZ#, i&
Do Until i = 100000
i = i + 1
If Яч1(i) = Яч1 Then ZZ = ZZ + Яч2(i)
If ZZ = 0 Then Exit Do
Loop
Counrows = i
End Function
Перенос данных в эксель
 
andypetr
Цитата
начало макроса с выбором файла честно стянул у ув.Евгений Смирнов).
Нехорошо воровать :D  Шутка. Ну вообще то никуда не годится по времени 20 минут это очень много . Теперь у меня тоже есть файл  30Мб. Пока 30 сек , но думаю надо довести  до 10-15 сек на такой файл. Учитывая,что моему компу лет 20 процессор первые из двухядерных и оперативки 1Гб.
Перенос данных в эксель
 

EgorShilov В вашем последнем сообщении ошибка недостаточно памяти. 2000 это вы много поставили, памяти будет много занимать. Если файл 30мб довольно большой, но в принципе должно обработать, но при написании кода надо все хорошо продумать, и 2 размерность массива обязательно контролировать. Я ведь просто на скорую руку написал код. И еще возможно, что в файле другое расположение данных. Поэтому для того, чтобы хорошо написать надо ваш файл целиком, а так ничего не получится.

Перенос данных в эксель
 
EgorShilov Я ведь написал, что макрос для файла в кодировке 1251. Возьмете файл с моего сообщения раз не умеете перекодировать.

Р.S. Или вы попробовали с другими файлами не их вашего сообщения. Может размерности не хватило. Найдите в коде Raz2 = 20 и поставьте цифру больше 50 или 100. Не сделал я в коде подсчет 2 размерности
Изменено: Евгений Смирнов - 17.04.2024 22:49:36
Перенос данных в эксель
 
EgorShilov Наверно приблизительно так хотели. Это в принципе черновик. Ваш текстовый файл в кодировке UTF-8 макрос для файла в кодировке 1251 и там еще надо обрезку массива делать.
Код
Sub ParsingTXT()
Dim ArFil, ArIn, ArVih, Tp1, Txt$, ii&, j%, iV1&
Const Kon$ = "*##########", Sl3$ = "///", Raz2% = 20
ArIn = "Files TXT (*.txt),*.txt," & "All Files (*.*),*.*"
ArVih = "Выберите файл и нажмите открыть"
ArFil = Application.GetOpenFilename(ArIn, , ArVih, , False)
If VarType(ArFil) = vbBoolean Then Exit Sub
ArIn = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(ArFil, 1).ReadAll, vbCrLf)
ReDim ArVih(UBound(ArIn)): For ii = 0 To UBound(ArIn)
If ArIn(ii) Like Kon Then ArVih(iV1) = Txt & ArIn(ii): iV1 = iV1 + 1: Txt = vbNullString Else Txt = Txt & ArIn(ii)
Next
ReDim ArIn(UBound(ArVih), Raz2): For ii = 0 To UBound(ArVih)
Tp1 = VBA.Split(ArVih(ii), Sl3)
For j = 0 To UBound(Tp1): ArIn(ii, j) = Tp1(j): Next j, ii
Range("A2").Resize(UBound(ArIn) + 1, UBound(ArIn, 2) + 1) = ArIn
End Sub
Перенос данных в эксель
 
EgorShilov Вообще в NotePad ++  можно исправить этот файл ручками, но если он большой сколько времени надо.
Перенос данных в эксель
 
Здравствуйте EgorShilov мне кажется того кто придумал такой формат записи текстового файла, надо выдвинуть на лауреата Нобелевской премии. Минут 20 думал как его разбить нормально в эксель, но безуспешно. Недавно делал вытаскивание из текстового файла генома, там есть проблемы, но не такие как здесь. Поэтому, если у Vik_tor в PQ получилось то хорошо.

P.S. В принципе можно написать макрос, но точно не 10 минут.(А составителю этого формата текстового файла все равно медаль надо дать)
Изменено: Евгений Смирнов - 17.04.2024 20:16:29
Убрать вывод единицы на основе пользовательской функции, Поправить код пользовательской функции
 
Здравствуйте
Jack Famous объясните пожалуйста обязательно ли в конце процедуры уничтожать переменные или только объектные надо. Где-то мельком видел про это, но не запомнил и не записал. В принципе ведь переменные сами уничтожаются в конце процедуры. Здесь вы оставили строку
Код
Set xDic = Nothing
Суммирование чисел из ячейки с текстом
 
Такой вариант UDF должен быть шустрее, чем в сообщении 6
Код
Function Summa2(Text$) As Double
Dim Ar1() As Byte, Ar2() As Byte, i&, n&, Fl As Boolean: Const Dob$ = "A"
Ar1 = VBA.StrConv(Text & Dob, vbFromUnicode)
ReDim Ar2(UBound(Ar1))
For i = 0 To UBound(Ar1)
If (Ar1(i) >= 48 And Ar1(i) <= 57) Or Ar1(i) = 44 Then
Ar2(n) = Ar1(i): n = n + 1: Fl = True
Else
If Fl Then
Summa2 = Summa2 + VBA.CDbl(VBA.StrConv(Ar2, vbUnicode))
ReDim Ar2(UBound(Ar1)): Fl = False: n = 0
End If: End If: Next i
End Function
Из названия месяца в формат даты
 
zorkon71
Цитата
Макросы не подходят, не один я работаю с файлами. Коллегам будет трудно исправить, если вдруг чего... (Да и не знаю, как макрос вписать в файл...
Вы просто не желаете с этим разобраться, хотя разобраться как функцию UDF добавить в файл 15-20 минут не более, даже если вы совсем не разбираетесь в этом. Ниже файл уже с функциями
Суммирование чисел из ячейки с текстом
 
Здравствуйте Вариант с UDF
Код
Function Summa(Txt$)
Dim Sum1#, Sim$, i&, n&, Fl As Boolean: Const Zap$ = ",", Dob$ = "A"
Txt = Txt & Dob
For i = 1 To Len(Txt)
Sim = VBA.Mid(Txt, i, 1)
If VBA.IsNumeric(Sim) Or Sim = Zap Then
If Not Fl Then If i > n Then n = i: Fl = True
Else: If Fl Then Sum1 = Sum1 + VBA.CDbl(VBA.Mid(Txt, n, i - n)): Fl = False
End If
Next
Summa = Sum1
End Function
Из названия месяца в формат даты
 
Еще пара UDF для разнообразия
Код
Function StrToDate1(Text As String)
    With CreateObject("VBScript.RegExp")
        .Pattern = "\d{2}[- .].{3,12}\d{4}"
    If .test(Text) Then StrToDate1 = CDate(.Execute(Text)(0)): Exit Function
    End With
End Function
Код
Function StrToDate2(txt)
Dim Arr() As Byte, Arr2() As Byte, n%, k%, i&
Arr = VBA.StrConv(txt, vbFromUnicode)
n = UBound(Arr)
For i = 0 To n
    If Arr(i) >= 48 And Arr(i) <= 57 Then
        If i < n Then n = i
        If i > k Then k = i
    End If
Next i
ReDim Arr2(n To k)
For i = n To k: Arr2(i) = Arr(i): Next
StrToDate2 = VBA.CDate(VBA.StrConv(Arr2, vbUnicode))
End Function
Преобразование графика, Преобразовать график отгрузок в список
 
Здравствуйте. Макрос не самый шустрый, но вроде работает.
Код
Sub Redesigner()
Dim i&, r&, c%, j%, k%, hc%, hr%, shRez As Worksheet, inData As Range
hr = 1
hc = 1
Application.ScreenUpdating = False
    Set inData = ActiveSheet.Cells(1).CurrentRegion
    Set shRez = Worksheets.Add
     
For r = (hr + 1) To inData.Rows.Count
    For c = (hc + 1) To inData.Columns.Count
    If inData.Cells(r, c) <> "" Then
    i = i + 1
        For j = 1 To hc
            shRez.Cells(i, j) = inData.Cells(r, j)
        Next j
        For k = 1 To hr
            shRez.Cells(i, j + k - 1) = inData.Cells(k, c)
        Next k
        shRez.Cells(i, j + k - 1) = inData.Cells(r, c)
    End If
    Next c
Next r
End Sub
Из названия месяца в формат даты
 
Здравствуйте . UDF
Код
Function StrToDate(txt$)
Dim Arr1: Const Rz$ = " "
Arr1 = VBA.Split(txt, Rz)
For i = 0 To UBound(Arr1)
If VBA.IsNumeric(Arr1(i)) Then Exit For
Next i
StrToDate = VBA.CDate(Arr1(i) & Rz & Arr1(i + 1) & Rz & Arr1(i + 2))
End Function
Размножение строк по столбцам с добавлением столбца условия
 
elmelkova Здравствуйте Макрос для выделенного диапазона.
Код
Sub enstarahgg()
Dim Arr1, Arr2, i&, k&, j%
Arr1 = Selection
For i = 1 To UBound(Arr1)
If Arr1(i, 1) <> vbNullString Then k = k + 1 Else Exit For
Next

ReDim Arr2(1 To UBound(Arr1) * k, 1 To 3): k = 0
Do While Arr1(j + 1, 1) <> vbNullString
j = j + 1
    For i = 1 To UBound(Arr1)
        Arr2(i + k, 1) = Arr1(j, 1)
        Arr2(i + k, 2) = Arr1(j, 2)
        Arr2(i + k, 3) = Arr1(i, 3)
    Next i
k = (i - 1) * j
Loop
Range("J1").Resize(UBound(Arr2), UBound(Arr2, 2)) = Arr2
End Sub
проверка сортировки по аргументу
 
Здравствуйте  nafanek
Цитата
такая задача, gpt измучала он не решил)
Вот если бы не измучили, может быть он и решил. Вас видимо стандартные средства сортировки не устраивают. Нужен макрос или формула. Формула выше а макрос ниже
Удаление символов из ячейки.
 
Здравствуйте  Выделите ячейки где надо удалить нули и запустите макрос.
Код
Sub enstaraldfsg()
Dim Tp1, i&, ArByt() As Byte
For Each Tp1 In Selection.Cells
ArByt = VBA.StrConv(Tp1, vbFromUnicode)
For i = 13 To UBound(ArByt)
If ArByt(i) = 48 Then ArByt(i) = 0
Next i
Tp1.Value = VBA.Replace(VBA.StrConv(ArByt, vbUnicode), vbNullChar, vbNullString)
Next
End Sub
Извлечь цифры из текста
 
Здравствуйте Макрос для выделенного диапазона. Останутся в ячейке только цифры.
Код
Sub enstaraldfsg()
Dim Tp1, i&, ArByt() As Byte
For Each Tp1 In Selection.Cells
ArByt = VBA.StrConv(Tp1, vbFromUnicode)
For i = 0 To UBound(ArByt)
If ArByt(i) < 48 Or ArByt(i) > 57 Then ArByt(i) = 0
Next i
Tp1.Value = VBA.Replace(VBA.StrConv(ArByt, vbUnicode), vbNullChar, vbNullString)
Next
End Sub
подсчет минут, количество звонков больше минуты
 
Здравствуйте. Наверно у ТС судя по файлу офис не выше 2003г. Функция СЧЁТЕСЛИМН появилась в 2007. Тогда может так.
Код
=СУММПРОИЗВ((R7:R34>1/1440)*(P7:P34="Телеф."))
Написать формулу в новом столбце, в котором будет выдаваться текст «60+», если сотруднику на сегодняшний день больше 60 лет., В противном случае нужно оставлять ячейку пустой
 
DANIKOLA
Цитата
P.S. Интересно почему этой функции(РАЗНДАТ) нету в стандартном списке(Excel 2010):
Потому. что эта недокументированная функция, хотя функция классная. Можно почитать здесь
Создать книгу внутреннего учета, Книга внутреннего учета для швейной мастерской
 

Сначала не поверил, что ИИ писал.

Здесь не обязательно использовать On Error и в 1 столбец 3 раза записываются значения, но для ИИ пойдет.

Вопросы по автоматическому изменению значения в ячейке, Автоматическое изменение числа в ячейке
 
Татьяна З Можете прочитать эту статью возможно будет полезно для понимания
Вопросы по автоматическому изменению значения в ячейке, Автоматическое изменение числа в ячейке
 
Татьяна З
Цитата
Получается это не победить(?
Исходя из сообщения Sokol92 в теме  по ссылке сообщения №2 никак не победить
Создать книгу внутреннего учета, Книга внутреннего учета для швейной мастерской
 
Sanja
Цитата
Можно ознакомиться с творчеством ИИ? Если не секрет. Все равно бесплатно достался)
Я думаю, что данный макрос ФСБ сразу засекретило. и нам не удастся  его увидеть. :D  
Уменьшить выделенный диапазон на одну строку
 
Код
Set Rg1 = Range("Таблица1[Данные]")
Set Rg1 = Intersect(Rg1.Offset(1, 0), Rg1)
Уменьшить выделенный диапазон на одну строку
 
Faiber Здравствуйте Если снизу таблицы то так В ссылке Rg1 будет обрезанный снизу диапазон. Чтобы сверху надо через Offset  и Intersect
Код
Set Rg1 = Range("Таблица1[Данные]")
Set Rg1 = Rg1.Resize(Rg1.Rows.Count - 1)
Как объединить проверку на ноль и на пустую ячейку в одно условие
 
olege1983 Здравствуйте Во первых две строки в коде надо выбросить они не нужны
Код
Pob = 0

Ошибка видимо появляется потому что вы пытаетесь проверить в одном операторе объектную переменную на пустоту и на ноль. Объектная переменная не может сравниваться с нулем. Попробуйте проверку на ноль делать в следующей строке после проверки на пустоту.

файл поврежден или расширение этого файла является недопустимым, не открыть файл
 
opapo Здравствуйте. Я так понимаю вы используете Съемный USB диск. У них надо следить за разъемами USB. Они со временем окисляются. Есть спец жидкости (спреи) для ухода за контактами(В радиотехнических магазинах надо искать) А если диск магнитный не SSD то еще желательно доп питание на него давать, тк у них значительный ток потребления и любое окисление контактов будет приводить к скачкам питания и соответственно порче файлов при сохранении.  Если файлы повреждены маловероятно, что вы их восстановите.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 36 След.
Наверх