Экспорт по условию в три файла *.csv трех диапазонов переменных, Накопить в ячейке четыре значения переменных и при выполнении этого условия экспорт в файл, потом цикл повторяется
Экспорт по условию в три файла *.csv трех диапазонов переменных, Накопить в ячейке четыре значения переменных и при выполнении этого условия экспорт в файл, потом цикл повторяется
В качестве файлика у меня только Ваш макрос, немного мной доработанный найденным в сети выводом в файл, но этот код не актуален, сейчас нет необходимости искать, а затем вычленять данные из строки, все данные уже в конкретных ячейках. Как проверить на выполнение условия? Я думаю так, макрос проверяет количество знаков ( ; ) в ячейке Q4, если этих знаков четыре, то размещает текущее значение L4 последним в ячейке, считая, что теперь кол-во данных в ячейке равно четырем, открывает соответствующий файл на запись, дописывает содержимое ячейки Q4 в файл с новой строки, закрывает файл и очищает ячейку Q4 для нового накопления, цикл повторяется.
Экспорт по условию в три файла *.csv трех диапазонов переменных, Накопить в ячейке четыре значения переменных и при выполнении этого условия экспорт в файл, потом цикл повторяется
Экспорт по условию в три файла *.csv трех диапазонов переменных, Накопить в ячейке четыре значения переменных и при выполнении этого условия экспорт в файл, потом цикл повторяется
Вообще то выкладывать личку в паблик это моветон, хотя там же Вы писали что несколько дней Вас не будет у компа, ну да ладно. Ваш макрос уже не работает, поскольку поменялись условия, поэтому кроме скрина мне проиллюстрировать нечем. Если мои пояснения никому не понятны, значит надо понимать помощи ждать не стоит.
Экспорт по условию в три файла *.csv трех диапазонов переменных, Накопить в ячейке четыре значения переменных и при выполнении этого условия экспорт в файл, потом цикл повторяется
Экспорт по условию в три файла *.csv трех диапазонов переменных, Накопить в ячейке четыре значения переменных и при выполнении этого условия экспорт в файл, потом цикл повторяется
Экспорт по условию в три файла *.csv трех диапазонов переменных, Накопить в ячейке четыре значения переменных и при выполнении этого условия экспорт в файл, потом цикл повторяется
Всем здравствуйте. Кто сможет написать макрос чтоб он автоматом начинал работать при открытии книги? Я уже создавал подобную тему, но условия изменились и нужен новый макрос взамен того что сделал БМВ. Задача изменилась вот как:
Три переменные одновременно приходят с локального сервера один раз в минуту всегда в одни и те же ячейки (L4, M4, N4). Нужно, чтобы переменная из L4 попадала в Q4 с накоплением, то есть, число (с двумя знаками после запятой) приходит в L4, макрос ставит один раз дату\время в начале ячейки Q4,( это как бы служебная инфа, дата\время начала накопления этой ячейки, и переменной не считается), потом после даты\времени ставит знак ( ; ), проверяет кол-во переменных в ячейке Q4, если их меньше четырех, то ставит переменную из L4 в Q4 и отделяет знаком ( ; ), иначе (если их уже четыре) дописывает содержимое ячейки Q4 в файл L.csv с новой строки, закрывает этот файл, очищает ячейку Q4, ставит в начало ячейки один раз дату\время, отделяет знаком ( ; ) и ставит переменную сюда(По остальным ячейкам идентичные действия, L4->Q4, M4->R4, N4->S4).
То есть, одним проходом макрос последовательно проверяет количество переменных в ячейках Q4, R4, S4, если в них уже по четыре значения переменных, то открывает соответственный файл (L.csv, M.csv, N.csv) на запись, дописывает значение соответствующей ячейки с новой строки, каждый в отдельный файл (с именами L.csv M.csv N.csv), закрывает файл на запись. Иначе - разносит соответственные переменные по ячейкам L4->Q4, M4->R4, N4->S4.
Огромная просьба, если кто возьмется, подробно откомментировать каждую строку, это важно, и вот почему. Ожидаю еще один источник данных, он будет давать еще ОДНУ переменную (с двумя знаками после запятой), и чтоб я смог самостоятельно добавить его показания в выводной файл, например из О4 в Т4, ну или как то зарезервировать и пока закомментировать строки кода макроса для еще одной переменной, до времени.
vikttur, Еща раз - я никого не трогал, по теме цитирования я уж думал что все решили, нет, нашелся советчик что и как мне делать. Я не мог его вежливо поблагодарить за непрошеный совет? Тема топика - хэлп к экселю, есть информация - с благодарностью прочту, нет - ну пройди мимо, всего то.
Юрий М, Я не тролль, я вообще никого не трогал, я только спросил о хэлпе к эксель и пару раз ответил двум пользователям на непрошеный совет, и всего лишь.
Андрей VG,Бана? И за что? За то что делают все и Вы в том числе, а на "ошибки " указывают только мне?
"Не нравится око государево - мигрируете в terra incognita." Вы тут кто? Пользователь? Ну так и пользуйтесь. А с модераторами вроде и без Вашего драгоценного выяснили. Или не в курсе пункта правил форума " 4.5. Самовольное модерирование. Т.е. когда некий участник форума, не являющийся модератором данного форума, делает замечания другим участникам."
Юрий М, вот ведь Вы точно так же "избыточно" процитировали, дважды воспользовавшись кнопкой Цитировать, и ничего не произошло, небо не рухнуло, шибко не "захламили" тему, даже как-то наряднее. Даешь свободу кнопке "Цитировать", долой зажим, да здравствует...ну там чего-нибудь.
vikttur,"Открою Вам большой секрет: кнопка цитирования для цитирования!" - Зачем Вы это сделали, теперь и я знаю большой секрет, наверное меня за это пристрелят. "Цитирование — это прямое использование текста из какого-нибудь источника без искажения мысли автора" - Не вру, или мой интернет взломали. Что касается правил форума - там только о чрезмерном цитировании. Но разве одна строка это уже чрезмерно? Например тут, все к месту. Не, ну я конечно понимаю, что "Этa нога — у того, у кого надо нога".
Скрытый текст
Здесь ведь Курилка, я то думал что можно было б ослабить галстук и сдвинуть шляпу, ан нет, и тут бдит око государево.
Юрий М, у меня получилось, я уже всем похвастался.
Я ничего в этой теме не нарушил. Единственно, не учел личные предпочтения модератора. Надумаете банить - стреляться не буду, конечно тихо поплачу, как водится у мужиков, и спать.
Tatarin_2 написал: Кнопка цитирования не для ответа [МОДЕРАТОР]
Блин, незадача. А для чего? Судя по Вашему обостренному вниманию к моей скромной персоне кнопка цитирования чисто для общения с Вами. Вам скучно, или я таки успел за пару недель лично модератору насолить?
.Cells(Rows.Count, 8).End(xlUp).Offset(1, 0).Resize(, 2) = A
Поменял 8 на 7, тогда обе колонки смещаются на столбик влево, и начинают вывод сверху, со второй строки
Цитата
БМВ написал: а если б посомтрели на №37, то это и ненужно, там все само находит
Поменял в макросе, действительно находит, понаблюдаю.
Цитата
БМВ написал: Как эти хотелки соотносятся с первым вопросом?
Да собственно уже никак, если имеется ввиду первый мой пост, все что я просил Вы уже сделали. Я ж написал - хотелки, улучшение. Может быть все еще сохраняется впечатление что я придуриваюсь и мне лень самому кодить, это не так. Все что мне доступно в этом плане я делаю.
Private Sub q_AfterRefresh(ByVal Success As Boolean)
Dim RefreshTime
RefreshTime = Now
Dim Shift_1 As Integer ' Заводим переменную с именем Shift_1
Shift_1 = [E14] + 13 'для первого слова плюс дополнит. смещение на 13
Dim Shift_2 As Integer 'Заводим переменную с именем Shift_2
Shift_2 = [E14] + 10 'для второго слова плюс дополнит. смещение на 10
Dim A(1 To 1, 1 To 2)
If Success Then
With Лист2
Data = .Range("A18:A21")
For i = 1 To UBound(Data)
If InStr(1, Data(i, 1), "Temperature:") > 0 Then
A(1, 1) = CDbl(Replace(Mid(Data(i, 1), Shift_1, 19), ".", ",")) 'Вставляем переменную Shift_1
ElseIf InStr(1, Data(i, 1), "Humidity:") > 0 Then
A(1, 2) = CDbl(Replace(Mid(Data(i, 1), Shift_2, 19), ".", ",")) 'Вставляем переменную Shift_2
End If
Next
Хвастаюсь. Опытным путем нашел как ссылаться на ячейку, где у меня всегда позиция начала искомого слова, и подобрал число дополнительного смещения. Вот наблюдаю, пока все ровно. Вопрос такой - эта ссылка на Е14 не абсолютная, я переместил весь столбик левее и макрос перестал работать.Как указать ей в макросе что она абсолютная?
Макрос, после всех формальностей по разрешению на включение и доступ, не стартует автоматом, как Вы сказали, стартую вручную, но эксель бурчит
Цитата
Не удается выполнить макрос "'...........\My Meteo _2.xlsm'!My Meteo _ 2. xlsm. Start". Возможно, этот макрос отсутствует в текущей книге либо все макросы отключены
Хотя все равно потом работает. Может он где-то привязан к конкретной книге и конкретному листу? Я то посмотрел - вроде нет, но тем не менее.
Хотелки, если Вам еще не надоело. Если можно, переместите в макросе столбик Н в столбик G, с тем, чтобы освободить столбик Н, и слева в столбик G ложить значение температуры, а рядом, в столбике F системную дату-время. Тоже самое для влажности, значение, как и было раньше, в столбик I, а системную дату-время в освободившийся столбик Н.
РАБОТАЕТ ПРАВИЛЬНО))) БМВ, благодарю от всей души, я бы примерно пол года вникал сначала в VB, потом в саму проблему. Еще вопрос, как максрос себя поведет при увеличении длины искомой строки? Будет или не будет обрезать? вот что волнует. Ну и если еще не надоела задача, я понаблюдаю за работой макроса, если что - я к Вам с горючими слезами)
обрезает первую цифру, видимо где надо вставить проверку длины искомой строки, то есть на старте запоминает длину искомой строки и с каждым приходом пачки проверяет, если длина увеличилась, то внести коррективы в поиск конца строки на предмет выделения последних пяти символов
Как нужно заменить? В макросах становлюсь на макрос со *.Start, кнопка Изменить, копирую Ваш исправленный текст на форуме, один в один заменяю в его в VB, закрываю VB и макрос исчезает из списка. Что не так делаю?
Урааааааааа, уже работает, чуть неправильно, но работает. Обгрызаются первые два символа в таблицах, пишет только точку и десятичные. Там где по четыре значения - ставит время-дату, правильно считает по 4 значения, но тоже обгрызает первые два знака. Со временем число индекса(крайняя левая группа чисел до знака : ) удлиняется на один знак и, видимо, поиск и вывод сбиваются.
Там два макроса, test и еще один. Какой из них запускать? А то я и тот и тот запустил не помню в какой последовательности.
Спасибо, забавно) Буду пробовать разбираться. А как можно капнуть по событию? Например, сработал запрос на обновление по сети(точно не знаю как назвать, внизу слева маленький зеленый глобус, это обновление, потом он исчезает. Наверное момент обновления как то можно отследить) - один кап,
"вы сами сбили с толку, поставив время 21:31 ведь там может быть только 21:34" - Ну наверное мы друг друга сначала недопоняли. Я, видимо, забыл откомментировать подробнее.
Да, точно А18-А21. Я немного подправил свой пост - "Приходит пачка. В ней 20 строк, выбираем последние 4 строки, там новые значения." И вот уже с последними четырьмя строками работаем, выбираем из них.
Беда вот в чем. У меня портабельная версия, досталась на древнем сидюке. Все бы хорошо, но при каждом вызове справки хэлп лезет в нет и оттуда тащит. Может у кого есть хэлп, чтоб встроить его в эксель?
Приходит пачка. В ней 20 строк, выбираем последние 4 строки, там новые значения. Из них --находим строку со словом Temperature: 24.50 (цифра условная, в пачке десятые отделены именно точкой) , забираем из этой строки правые пять символов(они крайние, пять символов это с вместе с точкой) и кладем их в ячейку колонки "Температура" и переходим на ячейку ниже для следующей пачки, --И, с этим же значением переходим в колонку "Температура" (которая по четыре значения), проверяем, там меньше четырех значений - кладем туда, иначе переходим на следующую ячейку, ставим системную дату-время и кладем в новую. Все то же самое из этой пачки со строкой Humidity.
Почему четыре а не пять? Так надо, для удобства. Почему на одну и ту же минуту приходится 4 значения? Здесь дата-время это фиксация времени приема первого значения. Откуда возьмется 24,50 ? Я изобразил как бы уже (условно)поработавшую 8 минут таблицу и как бы принявшую и раскидавшую по ячейкам 8 пачек значений, поэтому 24,50 это из левого столбика "Температура", там она вторая сверху. Вы же просили набросать схемку как я вижу эти таблицы, ну я и разгулял фантазию во всю толщину.
Вот к примеру, подтекает крантик, назовем его условно com port, раз в минуту безо всяких причин и логики из краника капает по капле. Но, капает, собака, в одну и ту же ячейку(представим вместо нее лабораторную мензурку). Задача - придумать супер-механизм (супер-функцию), передвигающий заполненную ячейку, а на ее место очередную пустую ячейку(мензурку) под следующую каплю из крантика, тот, который мы обозвали com port. Как осуществить такое чудо?
Что это? Как функция в ячейку не влазит и матерится. "Только это не фокус и вывод туда прсто так не произойдет." - Как это понять, если вывода не произойде, тогда нафига мне эта функция.
Именно по теме. Первый пост - "Чего добиваюсь, чтоб выводилась температура в отдельный столбик каждый тик(через минуту) в отдельной ячейке с переходом на нижнюю ячейку для следующей записи."