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

Страницы: 1
Выпадающий список из "отфильтрованных" ячеек
 
Разобрался, работает! Большое спасибо!
Выложил рабочий файл.
Изменено: Александр - 10.09.2021 20:57:06 (Прикрепил рабочий файл.)
Выпадающий список из "отфильтрованных" ячеек
 
Добрый день!
Прошу помочь с настройкой выпадающего списка из отфильтрованных ячеек столбца умной таблицы (фильтр по двум условиям).
В таблице на листе "список" исходные данные; выпадающие списки -  на листах "Петербург" и "Москва".
Не могу настроить отбор нужных ячеек, которые должны попасть в выпадающий список.
В прилагаемом файле сделал пояснения к задаче.
Формулами или макросом - не имеет значения, но сводная таблица мне не подходит, т.к. требует ручного обновления данных.
Excel 2013
при экспорте из pdf в некоторых ячейках теряется десятичная запятая
 
Нашел решение на просторах интернета)
Суть - принудительное указание текстового формата ячеек, в которые экспортируются данные. После копирования, перед вставкой.
Затем формат ячеек меняется на общий. Выкладываю исправленный файл
при экспорте из pdf в некоторых ячейках теряется десятичная запятая
 
Спасибо, но мне не удобно вручную прогонять через онлайн конвертер. У меня эта операция должна обрабатывать файлы PDF в пакетном режиме, перебором. Не удалось выяснить природу такого поведения Excel?
при экспорте из pdf в некоторых ячейках теряется десятичная запятая
 
Здравствуйте!
Не могу самостоятельно решить проблему: при экспорте табличных данных из pdf в excel 2013 в некоторых ячейках теряются десятичные запятые.
Раньше код экспорта применял не раз, но с такой проблемой не сталкивался. Причем в буфере обмена после экспорта информация хранится с запятыми - если после экспорта вставить содержимое буфера (вторая кнопка), то запятые оказываются на месте.

Файлы примеров (pdf и excel) прилагаю, проблемные ячейки пометил цветом. Win10 rus
Прошу не обращать внимание на неточности с расположением экспортированных ячеек - это появилось после "обрезки" pdf файла и в данном случае не важно. Дальнейший код переводит текстовые значения в числа.
невозможно отредактировать примечание
 
Спасибо за подсказку, также попал на эти грабли! Помогло изменение высоты строки:)
Не могу подружить If и Select Case, чтобы в результате выйти на один код
 
Юрий М

Ошибку осознал, постараюсь не повторять
Вроде лишнее из цитат вырезал, а сейчас посмотрел - оказывается, не все.
Upd. подчистил цитаты в своих ответах.
Изменено: Александр - 13.03.2015 23:15:20
Не могу подружить If и Select Case, чтобы в результате выйти на один код
 
Цитата
Юрий М написал:
Да ничего сложного - даже проще)) См. небольшой пример:
Теперь понял, что Вы имели в виду. Я кстати, так сначала (всмысле, вчера :)) и раскладывал MsgBox, но (сегодня:D) увидел более наглядный, с моей т.з., вариант. Но он в данном случае не помог мне...
Изменено: Александр - 13.03.2015 23:13:50
Не могу подружить If и Select Case, чтобы в результате выйти на один код
 
Цитата
Johny написал:
У автора темы условие срабатывания "КОД(Import)" - это "lLastRow =<12", а у вас, Hugo, он будет отрабатывать всегда. Или я чего-то недопонял?
Нет, два условия срабатывания  "КОД(Import)" :
1. Срабатывание при  lLastRow =<12"
или
2. Срабатывание, если lLastRow >12, и после вопроса о замене данных -  ответ пользователя "Да"
Изменено: Александр - 13.03.2015 23:11:49
Не могу подружить If и Select Case, чтобы в результате выйти на один код
 
Цитата
Юрий М написал:
Да и вообще можно без Select Case - проверяем сразу  vbYesNo
Это для меня ОЧЕНЬ сложно:D

Цитата
Hugo написал:
Так вроде там всё проще организовывается:
Ну что такое... Я ломал голову над этой проблемой целый день(!), а тут пришли Вы, и за десять минут её решили! Все отлично сработало!
Огромное СПАСИБО!
Не могу подружить If и Select Case, чтобы в результате выйти на один код
 
Здравствуйте!

Знатоки, помогите, пожалуйста, в решении проблемы:

макрос импортирует данные из файла .csv и вставляет их в ячейки текущего столбца ниже 12-ой строки.
Эти ячейки могут быть без данных, и тогда проблем нет; или с данными - тогда нужно спросить пользователя, перезаписывать их или нет.
КОД(Import) как раз и отвечает за импорт данных. Это не совсем маленький код, и вставлять его два раза - неспортивно.
Вопрос: какие есть варианты?
Запись КОДа(Import) в отдельную функцию у меня не получился.
Сейчас пока работает так:
Код
'код в модуль листа. Для выполнения даблкликнуть ячейку в третьей строке
'
 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim lLastRow As Integer
    Cancel = True
    lLastRow = Cells(Rows.Count, Target.Column).End(xlUp).Row
    
   If Target.Row <> 3 Then Exit Sub ' если активная ячейка не принадлежит 3-й строке, ничего не делать
   If lLastRow > 12 Then     ' если последняя заполненная ячейка расположена ниже 12-ой строки текущего столбца, 
   'значит, в ячейках есть данные, которые будут заменены при выполнении КОДа(Import). Выводим сообщение:
      Select Case MsgBox("Переписать существующие данные?", vbYesNo + vbQuestion + vbDefaultButton2, "Внимание!")
         Case vbNo
            MsgBox ("ОК, ничего не меняем, все оставляем как есть.")
            Exit Sub
         Case vbYes
            MsgBox ("Перезаписываю данные...")
        '--------------------
        '    КОД(Import)
        '--------------------
      End Select
   Else       ' если lLastRow =<12, ячейки без данных, можно без вопросов импортировать в них данные:
        '--------------------
        '    КОД(Import)
        '--------------------
   End If
End Sub
Обработка импортированных из csv данных
 
Цитата
Александр написал: Что за параметр Cancel в функции Worksheet_BeforeDoubleClick, за что он отвечает?
Сори, нашел инфу по этому вопросу. Для тех, кто не знает и для себя, если забуду :D:
Cancel = True  - это отмена стандарного поведение Excell по двойному клику в заданном диапазоне. Требуется, чтобы назначить свои действия.
Изменено: Александр - 11.03.2015 20:26:47
Обработка импортированных из csv данных
 
И еще раз всем здравствуйте!
Немного подточил код макроса от ув. Hugo под себя.
В процессе изучения кода у меня появилось несколько вопросов:
1. Что за параметр Cancel в функции Worksheet_BeforeDoubleClick, за что он отвечает?
2. Выражение
Код
sep_ = Mid(1 / 2, 2, 1)
для меня осталось загадкой. Вместо неё для замены точки на запятую в данных я использовал конструкцию
Код
If .exists(t) Then Cells(i, Target.Column).Value = Int(Replace(.Item(t), ".", ","))
и она работает. В ней есть подводные камни?
3. Когда я для очистки ячеек (в случаях, когда данные в словаре не найдены) попробовал вписать после кода
Код
For i = 13 To il
 t = Cells(i, 5) & "|" & d
 If .exists(t) Then Cells(i, Target.Column).Value = Int(Replace(.Item(t), ".", ","))  
строку
Код
Else .exists(t) Then Cells(i, Target.Column).Value = ""
то Excell пожаловался на отсутствие If (что-то типа Else  без If). Видимо, потому, что If в данном случае работает как-то по-другому? Просветите, пожалуйста:oops:
У меня сработала такая строка, и я её оставил вместо предыдущей:
Код
If Not .exists(t) Then Cells(i, Target.Column).Value = "" 
4. И еще мне не понятно, как макросом определяется максимальное значение показания счетчика в конкретной дате? Предположу, что кодом наполнения словаря
Код
With CreateObject("Scripting.Dictionary"): .comparemode = 1
                  For i = 0 To UBound(a)
                If Len(a(i)) Then 
                    b = Split(a(i), ",")
                    t = b(1) & "|" & Split(b(0))(0) 
                 .Item(t) = b(6) 
идет проверка строк сверху вниз методом замены предыдущего найденного значения последующим. А т.к. последующее - более свежее показание, то оно и остается в словаре, закрепляясь за ключем. Я прав?
5. В строке
Код
t = b(1) & "|" & Split(b(0))(0)   
Split(b(0))(0) - это дата. Выскажу предположение по поводу её извлечения здесь: функция Split(b(0))(0) разбивает переменную b(0) "дата время" на две ПОДпеременные, разделенные пробелом (аргумент Delimiter опущен) и выбирает первую подпеременную Дата, т.к. указан ноль (0) после Split(b(0)). Во завернул :) Это где-то рядом с действительностью или  я  в корне неправильно понял? Сразу прошу прощения у форумчан за дилетанские высказывания, а у экселя за новообразование "ПОДпеременные" :D Ну не знаю я, как это называется...
Изменено: Александр - 12.03.2015 09:08:20 (На первый вопрос нашел ответ)
Обработка импортированных из csv данных
 
Сейчас разбираю Ваш макрос с ошибкой по косточкам:) Оказывается, это может быть увлекательным занятием.
Самому любопытно - подгляжу в ответ "ребус-кроссворда" или справлюсь самостоятельно 8)
Изменено: Александр - 11.03.2015 00:13:17
Обработка импортированных из csv данных
 
Цитата
Alexander88 написал: Написал на скорую руку
Только сейчас увидел Ваш код. Спасибо!
Обработка импортированных из csv данных
 
Цитата
Hugo написал: Ну для понимания можно в моём варианте выгрузить собранное на лист. Чисто для информации.
А в процессе отладки содержимое массива можно смотреть в окне Locals, а для словаря можно дописать в код пару строк:  
ФАНТАСТИКА! Так гораздо удобнее разбираться в коде.

Цитата
Hugo написал: Вот рабочий код в модуль листа "данные" - просто даблкликнуть ячейку с датой в третьей строке    
Большое спасибо! Этот код вообще пока за гранью для меня, но я его расшифрую;) не без помощи форумчан.
Кстати, у меня он выдал ошибку Run-time error '13':Type mismatch при выполнении строки
Код
If .exists(t) Then Cells(i, Target.Column).Value = Int(.Item(t))
Хочу самостоятельно проанализировать код и найти причину ошибки. Если не получится, обращусь к сообществу. Всем огромное спасибо за помощь!
Обработка импортированных из csv данных
 
Спасибо, буду разбираться.
С точки зрения "изящности" решения, вариант без записи на лист конечно, лучше. Но для меня он сложнее в понимании на порядок. Если смогу решить эту задачку, буду это делать поэтапно. Главной проблемой считаю импорт данных только последнего опроса, в эту сторону и буду пока рыть
Обработка импортированных из csv данных
 
Цитата
Влад написал:Блоки на листе "Данные" у Вас всегда одинаковы?... не по всем счетчикам могут быть данные за указанный день.... Пропускать показатели?
Да, блоки  на листе "Данные" всегда одинаковые.
Если нет данных, пропускать показатели.
Обработка импортированных из csv данных
 
Цитата
Hugo написал: не факт что у всех последний будет именно в один день
Да, такая ситуация теоретически возможна.
Цитата
Hugo написал:
Намного проще найти данные по конкретному счётчику за конкретный день.
Да, конечно, этот вариант абсолютно устроил бы. Что касается времени, то можно было бы выбирать записи с максимальным значением времени в заданной дате.
Обработка импортированных из csv данных
 
Цитата
Leanna написал: Вы не указали что такое "последний опрос" в таблице csv такого критерия нет.
>Опросы ежечасные. Количество опрошенных счетчиков может меняться (т.к. счетчик может быть отключен в момент опроса, и данные о нем не будут отражены). Но внутри одного опроса счетчик не может быть опрошен более одного раза. Порядок опроса (т.е. порядок записей по счетчикам внутри опроса) не меняется.

Тогда если смотреть с конца таблицы csv и вверх (записи добавляются в конец), то к предыдущему опросу отнесем запись, удовлетворяющую условиям:
1. Повтор номера счетчика (внутри одного опроса счетчик не может быть опрошен более одного раза)
или
2. Время опроса не принадлежит часу последнего опроса (если последняя строка со временем 10.03.2015  08:00:34, то все, что раньше 10.03.2015  08:00:00 -  это предыдущий, ненужный, опрос)
Обработка импортированных из csv данных
 
Я думаю, что вторую часть задачи можно решить немного проще: не обязательно макросу проверять соответствие номера счетчика при вписывании показаний на лист "данные". Если на листе "Импорт_данных" будут только актуальные данные, а также структура показаний на нем будет совпадать со структурой на листе "данные", то можно просто копировать и вставлять целым блоком
Обработка импортированных из csv данных
 
Я попытался сначала сделать автоимпорт данных из csv макросом, что-то не пошло, знаний не хватило. Поэтому сделал его штатными методами excell, но естественно, получился импорт всех данных. В "макросописании" я новичек, и максимум, что смогу - разобрать "по косточкам" существующий код и попытаться понять, что к чему...
Обработка импортированных из csv данных
 
Доброго всем дня!
Прошу помощи в решении следующей задачи.
Есть файл report.csv, в который программой методом добавления к существующим записываются почасовые данные - показания электросчетчиков.
В другом файле "Показания счетчиков" ведется учет ежемесячных показаний этих счетчиков.
Сейчас настроено так: в файл "Показания счетчиков" импортируются ВСЕ данные из "report.csv", а затем вручную показания за последний опрос копируются на лист "данные", в соответствии с номером счетчика.
Основная проблема при этом, что из-за ненужной информации раздувается файл "Показания счетчиков", а также в том, что присутствует ручная выборка данных.
Я хочу настроить импорт из "report.csv" не всех показаний, а только за последний по времени опрос, а в идеале и запись их в нужные ячейки макросом.

Дополнительная информация  - в файле "Показания счетчиков".
найти по условию данные в строке и сцепить в отдельной ячейке
 
ikki и Вам спасибо за наводку. Буду изучать:)
найти по условию данные в строке и сцепить в отдельной ячейке
 
Hugo, iba2004, Юрий М ОГРОМНОЕ СПАСИБО! Все варианты работают так как мне надо. Буду вникать и остановлюсь на более понятном для меня варианте. Но сейчас я уже не думаю, что формулу освоить легче:)    
Еще раз спасибо!
найти по условию данные в строке и сцепить в отдельной ячейке
 
{quote}{login=Михаил С.}{date=01.12.2012 11:11}{thema=}{post}Формулами теоретически можно, практически - только если "все "Нева"" - не более 2-3.  
Нужен макрос, и на форуме он есть - вопросы такого задаются регулярно.{/post}{/quote}  
Спасибо! В моем случае "все "Нева" (или др. фирмы) может иметь до 4-5 номеров. Если с подсказанной формулой я еще смог бы, наверное, разобраться, то на самостоятельное написание макроса или глубокую его правку моих знаний не хватит:( Если это не очень сложно, не могли бы Вы  помочь мне  в написании такого макроса?
найти по условию данные в строке и сцепить в отдельной ячейке
 
Здравствуйте!  
Помогите, пожалуйста, в решении следующей задачи:    
Есть таблица, состоящая из двух строк. В верхней строке - названия фирм (могут дублироваться), в нижней строке - соответствующие фирмам номера (уникальные). Требуется вывести в отдельные ячейки подборку соответствующий номеров по фирмам. Существуют ли формулы, с помощью которых можно этого добиться? Что-то типа формулы "СУММЕСЛИ", только не с суммированием найденных по условию значений, а их сцеплением?  
Спасибо.
Страницы: 1
Наверх