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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 36 След.
Перенос данных в эксель
 
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 то еще желательно доп питание на него давать, тк у них значительный ток потребления и любое окисление контактов будет приводить к скачкам питания и соответственно порче файлов при сохранении.  Если файлы повреждены маловероятно, что вы их восстановите.
Невидимые кавычки в ячейках, Удаление невидимых символов
 

Здравствуйте Уважаемые ZVI Jack Famous. Вы тут про форматы при поиске заговорили. Насколько я знаю, что в поиске надо обязательно указывать 4 аргумента LookIn, LookAt, SearchOrder, MatchBytе, они сохраняют свои значения, а вот про форматы я ничего не знаю. Объясните пожалуйста начинивающему пользователю эксель, что форматы тоже сохраняют свои значения с предыдущего поиска или есть еще какие то подводные камни с форматами о которых я не знаю.

способ сортировки с прогрессией, подскажите функцию или способ сортировки
 
Не хватает только макроса
Код
Sub enstaralfgh()
Dim Arr1, Arr2, i&, k&, kM&, Fl As Boolean
Arr1 = ActiveSheet.Cells(1).CurrentRegion
Arr2 = Arr1: k = 1
Do: kM = 0: Fl = False
    For i = 2 To UBound(Arr1)
    If Arr1(i, 1) > emtpy Then Fl = True
          If Arr1(i, 1) > kM Then
          kM = Arr1(i, 1)
          k = k + 1
          Arr2(k, 1) = Arr1(i, 1)
          Arr1(i, 1) = Empty
          End If
    Next
Loop While Fl
Range("B1").Resize(UBound(Arr2)) = Arr2
End Sub
не могу запустить макрос появляется ошибка Microsoft office обнаружил возможное нарушение безопасности
 
ivanleb Здравствуйте. Наверно Microsoft office с ума сошел от количества модулей кода, не смог их посчитать Может стоило в файле сначала порядок навести и потом выкладывать в тему.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 36 След.
Наверх