Как распарсить строку в excel
Столкнулся с такой проблемой.
Есть таблица excel, сократим ее до 2-х столбцов:
- Запрос
- Потраченное время
В запросе хранится цифровой номер, например, 555. В потраченном времени, соответственно, время, которое потратил человек на выполнение запроса.
Но в таблице появилось много брака, в частности в столбце Запрос. Начали включать в него несколько номеров через запятую и, соответственно, указывают общее время на выполнение, т.е.:
555, 444, 111 с потраченным временем 9 часов
Можно ли как-то разделить такие строки на несколько (в зависимости от кол-ва номеров в столбце), а затраченное время высчитывать также исходя из кол-ва?
Т.е. на выходе получить:
555 - 3 часа
444 - 3 часа
111 - 3 часа
Столкнулся с такой проблемой.
Есть таблица excel, сократим ее до 2-х столбцов:
- Запрос
- Потраченное время
В запросе хранится цифровой номер, например, 555. В потраченном времени, соответственно, время, которое потратил человек на выполнение запроса.
Но в таблице появилось много брака, в частности в столбце Запрос. Начали включать в него несколько номеров через запятую и, соответственно, указывают общее время на выполнение, т.е.:
555, 444, 111 с потраченным временем 9 часов
Можно ли как-то разделить такие строки на несколько (в зависимости от кол-ва номеров в столбце), а затраченное время высчитывать также исходя из кол-ва?
Т.е. на выходе получить:
555 - 3 часа
444 - 3 часа
111 - 3 часа donarny
Столкнулся с такой проблемой.
Есть таблица excel, сократим ее до 2-х столбцов:
- Запрос
- Потраченное время
В запросе хранится цифровой номер, например, 555. В потраченном времени, соответственно, время, которое потратил человек на выполнение запроса.
Но в таблице появилось много брака, в частности в столбце Запрос. Начали включать в него несколько номеров через запятую и, соответственно, указывают общее время на выполнение, т.е.:
555, 444, 111 с потраченным временем 9 часов
Можно ли как-то разделить такие строки на несколько (в зависимости от кол-ва номеров в столбце), а затраченное время высчитывать также исходя из кол-ва?
Т.е. на выходе получить:
555 - 3 часа
444 - 3 часа
111 - 3 часа Автор - donarny
Дата добавления - 27.03.2017 в 22:45
Здравствуйте, подскажите пожалуйста, как можно решить такую задачу:
В таблице Excel есть столбец со строками вида:
«ЭРТ №2 Такой-то край, Такой-то район, в/г ВоенныйГородок № 42 Кот 174 Здание контрольно-пропускного пункта (караулка)(встроенная) №174» без кавычек.
Необходимо в три соседних ячейки той же строки, выдернуть числа после первого, второго и третьего символа «№» соответственно.
Учитывая, что между № и цифрой может быть или не быть пробел.
Я так понимаю, необходимо 3 формулы, но никак не получается сообразить, как получить число неизвестной длинны после символа.
Excel 7-10 года, Windows.
Поиск значения элемента(символа) строки по расположению в массиве символов
Задача такова: есть некий массив(псевдо-база_данных) символов, где хранятся символы русского.
Простой парсинг строки
Привет всем ! :) У меня возникла сложная такая штука: есть строка, которая по своей сути задает.
Парсинг значения строковой переменной с игнорированием символа
Такая задача - имеется строка, нужно парсить её (у меня парсинг с конца строки планируется, если.
Простой парсинг XML строки средствами php
Добрый вечер коллеги, помогите решить задачку. Имеется срока $string = "<order .
Решение
В принципе можно и формулой одной для всех:
=ПОДСТАВИТЬ(ПРАВСИМВ(ЛЕВСИМВ("№"&ПОДСТАВИТЬ($A$1;"№";ПОВТОР( "№";999));999*СТРОКА(A2));999);"№";"")
СТРОКА(A2) - это номер вхождения. Если вытягиваете не по строкам, а по столбцам, то замените на СТОЛБЕЦ(B1)
Из строки сформируйте новую, добавив заданный пользователем символ после каждого символа строки
Строки на Java!помогите в тупике Из заданной пользователем строки сформируйте новую, добавив.
Отсечь часть строки после вхождения символа/строки
string file = File.ReadAstring _file = File.ReadAllLines(_fileName); Такое вхождение.
Строки. Вставить после 3 символа в данной строке, подстроку «rama» и посчитать длину получившейся строки
Пользователем задана строка. Вставить после 3 символа в данной строке, подстроку «rama» и посчитать.
Загвоздка вот в чём
есть ячейка в которой есть вот такие данные
/346ххх Офигенная область Опупенный район с. Далёкое, ул. Школьная 37, /
этих ячеек очень много. Можно ли написать формулу которая будет будет вытаскивать слова и делать 3 ячейки
/Опупенный район / с. Далёкое / ул. Школьная 37/
Копирование содержимого из ячейки
Всем привет. В ячейку I3 поступают данные из сторонней программы. Мне необходимо скопировать.
Скопировать часть содержимого ячейки в другую
Здравствуйте. Подскажите можно ли как-то решить такую задачу. Есть столбец с данными вида.
Получение значения ячейки в зависимости от её содержимого
Доброго времени суток! :) Не могу придумать как осуществить следующее действие: Есть.
Зависимость содержимого одной ячейки от другой
Задача крайне простая, но как её сделать - без понятия. Нужно задать такую формулу: "Если в.
Загвоздка вот в чём
есть ячейка в которой есть вот такие данные
/346ххх Офигенная область Опупенный район с. Далёкое, ул. Школьная 37, /
этих ячеек очень много. Можно ли написать формулу которая будет будет вытаскивать слова и делать 3 ячейки
/Опупенный район / с. Далёкое / ул. Школьная 37/
Формулу такую скорее всего не сделашь, но в Excel есть встроенный Visual Basic, пишешь свой макрос и вешаешь его например на кнопку, и все.
Ромка_Суровый, Учиться никогда не поздно, если хоть на чем то умеешь программировать, освоишь быстро.
Может подскажешь с чего должен начинаться этот макрос, если мне начало показать я думаю что смогу по всяким хелпам и справкам довести до ума.
у меня этих строк около 40000
Заходишь Сервис->Макрос->Макросы
Создаешь макрос, у тебя появляется редактор.
Как обратиться к любой ячейки поищи в инете, материала очень много!
Давайте начнем с того что у Вас формат строки не совсем корректный, надо бы сделать хотябы так:
"346ххх Офигенная область, Опупенный район, с. Далёкое, ул. Школьная 37,"
Без запятых понять где закончилась Офигенная область и начался Опупенный район будет проблематично для макроса.
Можно и без VBA
Функции SEARCH, MID, LEFT спасут отца русской демократии
Ищем разделители (пробелы, запятые), делим строку на слова и собираем в нужные ячейки.
Пример:
пусть в А2 исходный текст
346ххх Офигенная область Опупенный район с. Далёкое, ул. Школьная 37,
В B2 вводим функцию =SEARCH(" ";A2), получаем 7.
В C2 вводим функцию =MID(A2;B2+1;1000), получаем
Офигенная область Опупенный район с. Далёкое, ул. Школьная 37,
И т.д.
(1000 взял для простоты, чтоб не возиться с вычислением длины строки функцией LEN)
LEFT в нужный момент используем для выделения первого слова из строки.
Можно, конечно, всё собрать в одну многоэтажную формулу в одной ячейке, но зачем?
Детали в Help: текстовые функции листа
Реализовать парсинг ячейки?
Здравствуйте, есть условие задачи: В ячейке А1 строка: 0-1;1-0;2-0;3-3;4-1 Нужно в ячейку B1.
Разный всплывающий список в зависимости от содержимого ячейки
Есть ли такая возможность в excel. Если в ячейке А1 больше двух символов , то в ячейке B1 один.
Распределение содержимого одной ячейки в разные строки
есть массив данных, где одному наименованию соответствуют несколько чисел через запятую в одной.
Копирование содержимого ячейки на другой лист по условию
Привет великим гуру владеющим в совершенстве Excel. В программе не силен, поэтому вопрос глупый.
Хочу поделиться опытом.
Была поставлена задача с помощью VBA Excel читать строки из огромного (более 200Мб) текстового файла, причем из конца в начало. Проводить операции поиска в этих строках, отбирать нужные и т.д.
Поискав в интернете, я так и не нашел более-менее готового варианта, хотя народ спрашивал.
Я написал макрос, который загружает данный текстовый файл в буфер по частям из конца в начало и производит поиск строк уже в буфере также из конца в начало.
Строки ищутся функцией InStrRev по вхождению символа vbLf.
Работает довольно шустро. (200Мб текста - в моем случае примерно 1,5 млн. строк перебирает за 10-15сек, на моем не очень слабеньком компьютере).
Если у кого возникнут корректировки для увеличения скорости обработки или обработки возможных ошибок, думаю будет уместно код скорректировать.
Парсинг строк из текстового файла
Доброго времени суток, господа! Уже n-ое количество времени мучаюсь со следующей задачей: .
Парсинг текстового файла и запись данных в Excel
есть текстовый док с такими строками : HS oper-209 UN Linux HS oper-203 UN Linux нужно.
Парсинг огромного XML файла
Здравствуйте! Пытаюсь распарсить большой xml файл. Для этого загружаю его в память и на этом.
Чтение огромного текстового файла
Добрый день, скажите, как можно очень быстро прочитать текстовый файл? Нашёл код на stackoverflow.
Хорошая работа, зачет. Есть вопросы: 1. размер буфера в 512 Кб для оператора input установили опытным путем?
2. Почему не использовали готовую библиотеку
scrypting.fso?
Предложения: введите процедуру обработки ошибок, возможные ошибки: 1. файл не существует. 2. файл уже открыт (занят) другим приложением. 3. Прочие ошибки, которые, нельзя предусмотреть.
По-моему, модуль получился слишком большой, если учесть еще код обработки строк, попробуйте разбить его, или оформить в виде отдельного класса, который будет работать примерно так же, как объект текстстрим в fso. Этот класс потом можно будет использовать в дальнейшем. Остальные замечания по коду несущественны, они вряд ли повлияют на общее быстродействие.
Если использовать тип Long, то файл ограничится размером в 2Гб, думаю тогда можно сделать тип Single. Встречал в интернете, что некоторым нужно было обрабатывать большие файлы, размером в 10Гб.
Размер буфера я пробовал менять от 100Кб до 10Мб, особой разницы я не заметил, зато при 10Мб требуется мегабайт 20 оперативки дополнительно. Величина в 512Кб вполне подходит и по скорости и по объему оперативки.
scripting.fso не использовал, т.к. посчитал что данный способ простой и вполне понятный, мне кажется это на скорость не повлияет, т.к. операций чтения файла происходит немного, и при этом эта библиотека все равно не имеет операторов, чтобы читать файл задом наперед построчно.
Обработку ошибок при открытии файла не писал, т.к. сроки поджимали, важно было сделать сам алгоритм
Модуль и вправду большой получился. Оформлять в виде класса идея хорошая, может и сделаю, пока не до этого.
Всем спасибо. Может кому пригодится.
kuryshevdmr, toiai прав. Нужно использовать long. Single не подходит, т.к. данные в single (и в double) хранятся с погрешностью. Так что данные с плавающей точкой ты употребляешь не к месту. Это может проявиться самым неприятным образом. Кроме того, функцию mid лучше употреблять в виде mid$. Так она сразу возвращает строку, а mid возвращает variant (что замедляет обработку).
добрый день уважаемый РАЗУМ. Нужна помощь в решении такой проблемы. есть таблица 240 000 строк в которой есть 3 столбца. нужно - во втором столбце найти строку со значением LKR и на этой строке в 3 столбце сделать парсинг $$aHOL$$lBGU01$$b000018261$$nARANN, что б найти значение $$b000018261 на это число нужно заменить в первом столбце все значения между LKR (их может быть 2, 3 или 4 значения - строки)
в файле - страница in - это ввод, страница out -такой должен быть вывод.
заранее спасибо за помощь
добрый день уважаемый РАЗУМ. Нужна помощь в решении такой проблемы. есть таблица 240 000 строк в которой есть 3 столбца. нужно - во втором столбце найти строку со значением LKR и на этой строке в 3 столбце сделать парсинг $$aHOL$$lBGU01$$b000018261$$nARANN, что б найти значение $$b000018261 на это число нужно заменить в первом столбце все значения между LKR (их может быть 2, 3 или 4 значения - строки)
в файле - страница in - это ввод, страница out -такой должен быть вывод.
заранее спасибо за помощь tigrik
Добрый день.
Вариант пользовательской функцией
В функцию передаем диапазон второго столбца, нижнюю границу закрепляем $, верхнюю нет
[vba]
Function tigrik(r As Range) As String
lkr = WorksheetFunction.Match("LKR", r, 0)
fstring = r.Cells(lkr).Offset(0, 1).Value
With CreateObject("VBScript.RegExp")
.Pattern = "\d"
tigrik = .Execute(fstring)(0)
End With
End Function
Добрый день.
Вариант пользовательской функцией
В функцию передаем диапазон второго столбца, нижнюю границу закрепляем $, верхнюю нет
[vba]
Function tigrik(r As Range) As String
lkr = WorksheetFunction.Match("LKR", r, 0)
fstring = r.Cells(lkr).Offset(0, 1).Value
With CreateObject("VBScript.RegExp")
.Pattern = "\d"
tigrik = .Execute(fstring)(0)
End With
End Function
Function tigrik(r As Range) As String
lkr = WorksheetFunction.Match("LKR", r, 0)
fstring = r.Cells(lkr).Offset(0, 1).Value
With CreateObject("VBScript.RegExp")
.Pattern = "\d"
tigrik = .Execute(fstring)(0)
End With
End Function
извиняюсь, все великолепно работает. Это просто гениально.
а как что б ексел самостоятельно размножило до конца 240 000 строк?
извиняюсь, все великолепно работает. Это просто гениально.
а как что б ексел самостоятельно размножило до конца 240 000 строк? tigrik
Dim arrRes(), arrBC(), strLKR As String
Dim var, lngInStr As Long, lr As Long, i As Long
lr = Cells(Rows.Count, "B").End(xlUp).row
arrBC() = Range("B1:C" & lr).Value
ReDim arrRes(1 To UBound(arrBC), 1 To 1)
For i = UBound(arrBC) To 1 Step -1
If arrBC(i, 1) = "LKR" Then
var = arrBC(i, 2)
lngInStr = InStr(var, "$$b")
var = Mid(var, lngInStr + 3)
lngInStr = InStr(var, "$$")
var = Left(var, lngInStr - 1)
strLKR = var
End If
arrRes(i, 1) = strLKR
Next i
Range("A1:A" & UBound(arrRes)).Value = arrRes()
MsgBox "Готово!", vbInformation
Dim arrRes(), arrBC(), strLKR As String
Dim var, lngInStr As Long, lr As Long, i As Long
lr = Cells(Rows.Count, "B").End(xlUp).row
arrBC() = Range("B1:C" & lr).Value
ReDim arrRes(1 To UBound(arrBC), 1 To 1)
For i = UBound(arrBC) To 1 Step -1
If arrBC(i, 1) = "LKR" Then
var = arrBC(i, 2)
lngInStr = InStr(var, "$$b")
var = Mid(var, lngInStr + 3)
lngInStr = InStr(var, "$$")
var = Left(var, lngInStr - 1)
strLKR = var
End If
arrRes(i, 1) = strLKR
Next i
Range("A1:A" & UBound(arrRes)).Value = arrRes()
MsgBox "Готово!", vbInformation
Dim arrRes(), arrBC(), strLKR As String
Dim var, lngInStr As Long, lr As Long, i As Long
lr = Cells(Rows.Count, "B").End(xlUp).row
arrBC() = Range("B1:C" & lr).Value
ReDim arrRes(1 To UBound(arrBC), 1 To 1)
For i = UBound(arrBC) To 1 Step -1
If arrBC(i, 1) = "LKR" Then
var = arrBC(i, 2)
lngInStr = InStr(var, "$$b")
var = Mid(var, lngInStr + 3)
lngInStr = InStr(var, "$$")
var = Left(var, lngInStr - 1)
strLKR = var
End If
arrRes(i, 1) = strLKR
Next i
Range("A1:A" & UBound(arrRes)).Value = arrRes()
MsgBox "Готово!", vbInformation
Karataev, спасибо большое, но на большом файле вылетает с ошибкой ((((
обнуляется lngInStr = InStr(var, "$$") и после этого вылетает на var = Left(var, lngInStr - 1)
Karataev, спасибо большое, но на большом файле вылетает с ошибкой ((((
обнуляется lngInStr = InStr(var, "$$") и после этого вылетает на var = Left(var, lngInStr - 1) tigrik
Значит после искомых данных нет символов "$$":
$$aHOL$$lBGU01$$b000018261$$nARANN
По ним макрос ищет, где заканчиваются искомые данные.
Значит после искомых данных нет символов "$$":
$$aHOL$$lBGU01$$b000018261$$nARANN
По ним макрос ищет, где заканчиваются искомые данные. Karataev
По ним макрос ищет, где заканчиваются искомые данные. Автор - Karataev
Дата добавления - 18.02.2018 в 10:53
Читайте также: