По условию ячейки скопировать строку в новый файл ( макрос )

Автор georgiy123, 7 января 2020, 19:10

0 Пользователи и 1 гость просматривают эту тему.

georgiy123

Всем привет ребята !
Искал , гуглил , нечего не нашел .
По поводу макросов , я только копипаст .
Ребята , нужна помощь , каждый день обрабатываю логи , внизу прикреплен файл , как видно по файлу в столбце "F" работает условное форматирование .
Можете помочь написать макрос ?
Задача такая , где срабатывает условное форматирование (где ниже 0,95 , между 0,9 и 0,8999 и т.п )
Эту строку копировать в новый файл
Для примера закрепил файл , в файле 2 листа , общее , и пример .
Зарание спасибо !!!))) :)

georgiy123

Или удалить на листе строки там где не сработало  условное форматирование *


economist

#3
georgiy123 - условное форматирование (УФ) - это невидимый слой формул, который возвращает формат (в вашем случае - цвет ячеек). Напишите в ближайших пустых столбцах те же формулы УФ (их эквиваленты) - и получите значения ИСТИНА/ЛОЖЬ или TRUE/FALSE. Эти столбцы легко Автофильтровать и удалять/копировать нужное/ненужное. Я использовал знак "Меньше <", хотя в примере указано "между", причем с низкой точностью, лучше такого сравнения избегать. Пример вложен:


ЗЫ: Для анализа логов есть специализированные инструменты, которые сразу рисуют графики и агрегируют в логах хосты, разделы сайта итп. 99% из них - бесплатны, например Analog, webstat итп.

Если нужна скорость и фишки типа когортного анализа - то нужная вам табличка (в формате xls, но можно csv/ods и вообще любой другой) с помощью Python+Pandas получится в три строки и будет работать молниеносно:

import pandas as pd
df=pd.read_csv('C:\log.txt', sep=';')
df[df.col6<0.95].to_excel('C:\out.xlsx')
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

georgiy123


georgiy123

Sub NDRowsDelete
odoc=thiscomponent
oSheet = oDoc.CurrentController.getActiveSheet()
myrows=oSheet.getrows

rowmax=2000 'максимальное количество строк
rowmin=0       'минимальное количество строк

For i=rowmax To rowmin step -1
textnd = osheet.getcellbyposition(5,i).string '(5)- столбец 'F'  0=A 1=B 2=C 3=D  и т.п.
    If textnd >="0,95" Then 'удалять строку если в столбце F  значение =>0.95
      myrows.removebyindex(i,1)
    End if   
Next i

End Sub

georgiy123