Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 766 След.
Создать макрос сохранения документа с именем файла согласно значению в заданной ячейке
 
Ну и ещё нужно строго настрого надавать по рукам пользователям, которые в эту ячейку пишут что попало :)
CSV файл открывается в excel, сразу разделяя поля
 
Цитата
Hugo написал:
через импорт внешних данных
можно настроить и как обрабатывать даты, и где поля текстовые, а где числовые, и какой в файле десятичный разделитель...
Это я про свой 2010 говорю, ну а у кого используется PQ - там вообще что угодно кажется можно настроить, помню был один подлый csv, с которым исключительно только PQ и справился.
Изменено: Hugo - 16 янв 2021 13:03:29
CSV файл открывается в excel, сразу разделяя поля
 
Цитата
MSLOleg написал: Excel числа переводит в дату ( Если открывать таким методом
- внимательнее нужно метод исследовать. Тщательнее!

P.S. а вообще чтоб поставить точный диагноз - нет пока данных о болезни!
Кроме самого файла, нужно ещё знать версию приложения.
CSV файл открывается в excel, сразу разделяя поля
 
Открывайте через импорт внешних данных, там сам себе хозяин как делить на поля.
Извлечение уникальных значений из диапазона
 
Есть вот такая UDF: http://prntscr.com/wnpbyi
Код
Function ВЫВОД_УНИКАЛЬНЫХ(Диапазон As Range, Номер_результата As Integer)
'возвращает N-ное из уникальных значений в указанном диапазоне
    Dim iArr, arr(): arr = Intersect(Диапазон, Диапазон.Parent.UsedRange.Cells.SpecialCells(xlCellTypeVisible)).Value
    With CreateObject("Scripting.Dictionary")
        .comparemode = vbTextCompare   ' Создаем словарь
        For Each iArr In arr
            If Trim(iArr) <> "" Then iArr = .Item(Trim(iArr))   'попытка чтения значения по отсутствующему ключу добавит ключ в словарь ( см., например, http://program.rin.ru/cgi-bin/print.pl?id=120#17 )
        Next
        arr = .Keys   ' массив ключей копируем в массив (напрямую читать из .Keys не получается, т.к. словарь определён не явно)
        If Номер_результата >= 1 And Номер_результата <= .Count Then
            ВЫВОД_УНИКАЛЬНЫХ = arr(Номер_результата - 1)
        Else
            ВЫВОД_УНИКАЛЬНЫХ = CVErr(xlErrNA)
        End If
    End With
End Function
Изменено: Hugo - 14 янв 2021 23:30:25
Вытянуть данные из 500 файлов
 
Ігор Гончаренко, там в файле
Код
MultiSelect:=False)

P.S. я код и не досмотрел :)
Хотя конечно можно и так, юридически всё верно :)
Изменено: Hugo - 14 янв 2021 20:47:23
Использование Эксель как "базу данных"
 
Не знаю, по мне проще 1500 файлов, если их называть не абы как - проблем не вижу.
Если в имени файла ФИО, код какой-то (ID, страхование, местный больничный...) и ещё например дата создания - то всегда сортировкой легко найти нужный, а если что - просто написать не сложный макрос для поиска файла.
Собрать же все данные в сводную таблицу думаю легко в PQ, впрочем я уже говорил. Но я лично пас, не пользуюсь. Как и вообще экселем в работе, только исключительно как источником данных для аналитики, но не в продукте MS :)
Использование Эксель как "базу данных"
 
Ходить вперёд-назад если пациентов тысячи -это без полноценной базы не будет особо быстро...
Но вообще может и не нужно ничего мудрить, просто сохраняйте каждый файл с атрибутом только для чтения, тогда можно будет брать любой из ранее созданных, изменить под нового пациента некоторые поля и снова сохранить уже под другим именем.
Плодить 500 листов с данными разных пациентов думаю не нужно, да и для одного это много, можно ведь разбить данные по группам как-то...
Делаете для каждого пациента отдельный файл. а если нужно подбить какую-то статистику, то всегда можно из этих файлов нужное собрать в один отчёт, например через PQ или PowerBI, что для этого и придумано.
Использование Эксель как "базу данных"
 
Цитата
dr_Solo написал:
А есть способ уже сделанную таблицу перевести в "форму"
- вообще можно после заполнения этой таблицы по нажатию кнопки копировать все эти данные в "базу", а лист очищать для следующего ввода. Обойтись без UserForm вообще.
Но когда используется UserForm - там проще задать всякие правила ввода, т.е. заставить юзера заполнить всё правильно.
Изменено: Hugo - 9 янв 2021 17:54:52
Использование Эксель как "базу данных"
 
Форма - это  только для ввода данных в базу, подобием которой может служить и эксель, или даже пусть по файлу на каждого пациента...
Неужели у вас нет вообще полноценной базы пациентов?
Использование Эксель как "базу данных"
 
Я говорил про другие формы, про UserForm, типа вот этого: https://www.planetaexcel.ru/techniques/3/168/
но с элементами для ввода данных.
Вашего МЗ я не знаю...
Посмотрел файл - думаю всё это реально подвязать к базе. И точно кто-то уже так и сделал.
Но это реализовать - это работа, и честно говоря совершенно не интересная :(
Изменено: Hugo - 9 янв 2021 17:38:14
Использование Эксель как "базу данных"
 
Добрый день.
Наверняка уже кто-то этот функционал к этим формам приладил, может даже в этом МЗ :)
Ждите, если тот человек здесь появится - он возможно поможет.
Ну а я например вообще без понятия что за формы и что туда пишется, могу только сказать одно - для заполнения пишите свою форму, для извлечения используйте ВПР().
Копирование CSV файлов в один файл EXCEL из определенной папки, Копирование CSV файлов в один файл EXCEL из определенной папки
 
Т.к. файлы выбираете сами вручную - сами себе и хозяин, выбирайте только csv.
Можно ведь открыть каталог как список и отсортировать по типу - будут все csv рядышком, выделяйте без лишних.
Но можно подстраховаться - перед открытием проверить расширение. Но зачем? Пропадёт универсальность кода.
Или настройте фильтр на csv:
Код
FileFilter:="All files (*.csv), *.csv"
Изменено: Hugo - 9 янв 2021 15:33:47
Вложенный цикл не меняет значения счетчика
 
Нет, проблема в том что нет файла и нет кода. Может там банально где-то раскладка попутана - option explicit ведь не применяете.
А по задаче - чую что можно написать простой короткий код используя словарь. Но в деталях задачу не вижу...
возможно ли среди чисел найти те которых нет в списке
 
А я думаю правильнее подождать :)
P.S.
Можно сперва загнать в словарь все существующие числа, затем циклом от минимального до максимального проверить наличие числа в словаре, и те, которых в словаре нет - собрать в коллекцию.
Или другой вариант - сперва циклом от минимума до максимума наполнить словарь, затем циклом по существующим их из словаря удалить. Если заведомо нет дублей - так даже как-то экономнее и возможно быстрее.
Изменено: Hugo - 8 янв 2021 23:11:59
Как при помощи массивов быстро собрать список уникальных элементов?
 
Кому не нравится словарь (или кто маковод) - есть ведь родные коллекции! Только конечно юзать с ключами, и может прямо в ней всё и собирать, для названий вполне достаточно.
Или это пунктик такой - вот только массивы и никаких других компонентов?
Изменено: Hugo - 4 янв 2021 23:22:45
Выбрать категорию, группу по температуре, давлению
 
https://ru.excel-translator.de/translator/
Код
=ИНДЕКС({"Категория Iэ, группа 1";"Категория Iэ, группа 2";"Категория Iэ, группа 3";"Категория Iэ, группа 4";"Категория IIэ, группа 1";"Категория IIэ, группа 2";"Категория IIIэ, группа 1";"Категория IIIэ, группа 2";"Категория IVэ, группа -";"Не применимо"};11-ЕСЛИ(ИЛИ(A4<=115;B4<=0;07);1;МАКС(ПРОСМОТР(-A4;-{999;560;520;450;350;250;115};{10;9;8;6;5;3;1});ЕСЛИ(B4<=0;07;1;ЕСЛИ(B4<1;6;2;ЕСЛИ(B4<4;3;ЕСЛИ(B4=4;4;ЕСЛИ(B4<8;5;ЕСЛИ(B4=8;6;7)))))))))

или может так:
Код
=ИНДЕКС({"Категория Iэ, группа 1","Категория Iэ, группа 2","Категория Iэ, группа 3","Категория Iэ, группа 4","Категория IIэ, группа 1","Категория IIэ, группа 2","Категория IIIэ, группа 1","Категория IIIэ, группа 2","Категория IVэ, группа -","Не применимо"},11-ЕСЛИ(ИЛИ(A4<=115,B4<=0,07),1,МАКС(ПРОСМОТР(-A4,-{999,560,520,450,350,250,115},{10,9,8,6,5,3,1}),ЕСЛИ(B4<=0,07,1,ЕСЛИ(B4<1,6,2,ЕСЛИ(B4<4,3,ЕСЛИ(B4=4,4,ЕСЛИ(B4<8,5,ЕСЛИ(B4=8,6,7)))))))))
Изменено: Hugo - 3 янв 2021 20:59:00
Выбрать категорию, группу по температуре, давлению
 
Ну переводите, чтож теперь...
Вычисления в книге, автоматически или вручную, как проверить в vba.
 
События отключайте, чтоб другие макросы не реагировали.
Выбрать категорию, группу по температуре, давлению
 
Это какое-то тестовое задание, чтоб помучить? Потому что если нужно для работы - ну подготовьте человеческую табличку, где можно обойтись парой ВПР...
Добавление номера машины из одной таблицы в одну из двух новых
 
Ну тогда можно было в первый код дописать только эти ресайз с транспонированием и всё.
Добавление номера машины из одной таблицы в одну из двух новых
 
И зачем вопрос удалили? С утра времени вагон :)
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range, k As Long, l As Long

    If Not Intersect(Target, Range("B1:B4")) Is Nothing Then
        With Worksheets(2).UsedRange
            Set c = .Find(Range("B1").Value, LookIn:=xlValues, LookAt:=xlWhole)
            If Not c Is Nothing Then
                If c.Next = "+" Then k = c.Column
            End If
        End With
        Select Case k
        Case 1
            Cells(Rows.Count, 7).End(xlUp)(2).Resize(, 4) = Application.Transpose(Range("B1:B4"))
        Case 7
            Cells(Rows.Count, 15).End(xlUp)(2).Resize(, 4) = Application.Transpose(Range("B1:B4"))
        Case Else
            MsgBox "Нет такой машины на сайте", vbCritical
        End Select
    End If
End Sub
Добавление номера машины из одной таблицы в одну из двух новых
 
Нет там никаких энтеров, там обрабатывается событие изменения ячейки.
Теперь уже сами допиливайте, нужно было сразу всю задачу рассказывать.
А я спать.
Добавление номера машины из одной таблицы в одну из двух новых
 
Код в модуль первого листа:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) <> "B1" Then Exit Sub
    Dim c As Range, k As Long, l As Long
    With Worksheets(2).UsedRange
        Set c = .Find(Target, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            If c.Next = "+" Then k = c.Column
        End If
    End With
    Select Case k
    Case 1
        Cells(Rows.Count, 7).End(xlUp)(2) = Target
    Case 7
        Cells(Rows.Count, 15).End(xlUp)(2) = Target
    Case Else
        MsgBox "Нет такой машины на сайте!", vbCritical
    End Select
End Sub

Ну и можно далее наращивать - нужно ли проверять на дубли, что делать с несуществующими на сайте номерами, может их нужно куда-то в другой лист писать, ну и т.д.
Изменено: Hugo - 1 янв 2021 21:44:22
Добавление номера машины из одной таблицы в одну из двух новых
 
Т.е. макрос должен работать так:
по событию изменения ячейки B1 первого листа
искать номер на втором листе,
если нашёл, то проверяем есть ли правее +,
если есть то смотрим в каком столбце нашли,
искать достаточно до первого совпадения.
Если всё сошлось, то ищем последнюю свободную строку в соотв. столбце первого листа
и пишем туда этот номер.
Так?
Добавление номера машины из одной таблицы в одну из двух новых
 
Ну а макрос что должен делать - если "+" как у всех в примере то нужно копировать номер в последнюю свободную столбца, а если "-" то игнорировать?
Или "-" на втором листе вообще быть не может, и нужно смотреть на первый лист или только на плюсы во втором?
Изменено: Hugo - 1 янв 2021 19:38:14
Добавление номера машины из одной таблицы в одну из двух новых
 
С наступившим!
Самое сложное - понять нафига в этих таблицах фигурируют эти + - и что нам с этим делать.
Поиск значения на основе соответствия одного столбца нескольким
 
Как вариант можно из результата массивной
Код
=ВПР(A2;Лист2!$A$2:$A$10&" "&Лист2!$B$2:$B$10&" "&Лист2!$C$2:$D$10;2;0)

вырезать последнее слово. Скрин: http://prntscr.com/we7d5f
Но проще ведь сделать столбец, по которому можно спокойно вприть или индекспозицить :)
Изменено: Hugo - 1 янв 2021 19:18:36
Копировать и вставлять без дубликата
 
Вот готовый код:
Скрытый текст
Копировать и вставлять без дубликата
 
Цитата
How can I prevent duplicate copy and paste?
- вопрос что считать дубликатом? Если только дату - то например сегодня уже дата другая, а новости старые...
Думаю надёжнее ставить не текущую дату, а дату извлечения новости с сайта, а для этого эту дату нужно прописывать где-то в строку с новостью на листе News, её же писать на индивидуальные листы, и её же перед копипастом сперва поискать на целевом листе.
Или может лучше хэшировать саму новость, чтоб не повторяться - реально сейчас там новости прошлогодние всюду :)
Цитата
How can I automatically adjust the line-height to fit the text?
- этот процесс записывается рекордером, затем эту часть кода, например вот:
Код
                Worksheets(NOMFEUILLE).Rows("3:3").EntireRow.AutoFit

можно вставить в свой код после копирования.
Надеюсь искусственный интеллект корректно переведёт всё это на этот австралийский Trini dialect. :)
С Новым Годом!
Изменено: Hugo - 1 янв 2021 13:03:07
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 766 След.
Наверх