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

Страницы: 1 2 След.
MySQL и Excel
 
Добрый день, уважаемые форумчане.

Часто приходится работать с тяжелыми файлами(таблицы по 10 тысяч строк, 20 - 30 файлов с взаимосвязями). Благодаря знаниям, которые почерпнул здесь, на форуме, эта работа стала в принципе возможной, за что вам огромное спасибо). Очень часто встречаю в интернете идею использования баз данных для хранения информации, а эксель для обработки - самый лучший вариант, на мой взгляд.

Установил СУБД MySQL, ознакомился с языком SQL - в целом(с виду) не сложный, но достаточный для выполнения требуемых функций. Попробовал связать, руководствуясь нагугленным, при этом не понимая и половины того что делаю, и все получилось))  Проблема в том, что я толком в этом ничего не понимаю.

Поэтому несколько вопросов:
Что такое ODCB DSN, Mycrosoft Querry, ADO?
Что это за раздел знаний в принципе? Чтобы как то комплексно подойти к обучению, а не тыкаться пару месяцев по форумам, в свободные минуты
Как настроить обратную связь с БД через VBA? чтобы можно было экспортировать в БД из эксель, или наооборот сделать формы для формирования запросов, с помощью стандартных средств(кнопки, выпадающие списки, проч.)

Искал по форуму, нашел ссылки на англоязычные источники, гугл выдает примерно тоже самое. С английским не очень( Если не трудно поделитесь знаниями или ссылками на понятные объяснения. Заранее благодарю.
Использование символа из ячейки в вычислениях внутри массива
 
Спасибо)
Использование символа из ячейки в вычислениях внутри массива
 
Пробую так :
Код
c(i, y) = Application.Evaluate(a(i, y), Cells(1, 6).Value, b(i, y))
не выходит, что не так делаю?
Использование символа из ячейки в вычислениях внутри массива
 
Вот так вроде бы
Код
 c(i, y) = a(i, y) - b(i, y)' на месте "-" должно быть значение ячейки f1
Использование символа из ячейки в вычислениях внутри массива
 
Добрый день.

Подскажите, возможно ли использовать значение ячейки (если это: +, -, /, * ...) для программных вычислений? Представляю как вставить это в .Formula =, а что если операции производить над массивом, например, без использования листа? Спасибо.
VBA макрос, получение значения ячейки.
 
Попробуйте так
ActiveCell.FormulaR1C1 = "=RC[1]+" & a
Изменение границ массива
 
Понял, спасибо.
Изменение границ массива
 
Доброй ночи, уважаемые форумчане! Подскажите пожалуйста откуда берется ошибка (Run time error '9'), вот тут
Код
Dim Loadarray()
ReDim Loadarray(1 To 5, 1 To 3)
ReDim Preserve Loadarray(UBound(Loadarray) + 1, UBound(Loadarray, 2) + 1)
Информацию смотрел на данном ресурсе, например. Вроде как все правильно делаю, или все таки не угадал с размерностью?
Как расчитать сумму кредита для аннуитета ?
 
Добрый день. Так то нужна еще процентная ставка и срок кредита, а в чем связь с экселем?
Применение условного форматирования не смежного диапазона ячеек при группировке
 
А если там формулы, а мы ищем результат вычисления?
Применение условного форматирования не смежного диапазона ячеек при группировке
 
Что то тема ушла в историю... Ну вот что я лично нашел, и использовал

Циклом перебираем ячейки на .Hidden = True/False если предыдущее не равно следующему то это наша ячйка

Для меня лично еще загвоздка была в использовании метода Find, в скрытых ячейках он не работает, поэтому если необходимо его использовать то сначала нужно отобразить диапазон в котором будет поиск(тоже через Hidden)

Далее объединяем ячейки примерно так:

Код
Dim a, u As Range
For Each a In Range("A1:A100")
If a.Value = 1 Then
If u Is Nothing Then
Set u = a
Else
Set u = Union(u, a)
End If
End If
If Not u Is Nothing Then u.Select
Next
u.Select
'выделяет все ячейки в указанном диапазоне если они = 1


Далее можно применять условное форматирование, это можно через макрорекордер.
Лично я для выбора горизонтального либо вертикального форматирования применял Inputbox далее If Then.
Применение условного форматирования не смежного диапазона ячеек при группировке
 
Доброй ночи. Пытаюсь написать универсальный макрос для применения условного форматирования ячеек по параметрам, диапазон ячеек не смежный. Основное условие форматирования это вертикальная и горизонтальная группировка. Но не сложно и проиндексировать вершины групп. Хочется получить универсальный макрос так как есть необходимость в одном случае форматировать вершины вертикальные, в другом горизонтальные. Подскажите, пожалуйста, в какую сторону глядеть.  
CSV формат эксель
 
Hugo, огромное спасибо, в очередной раз меня выручили)))
CSV формат эксель
 
Доброго времени суток.

В работе часто приходиться перемещать данные из экселя в 1С, прочие программы и обратно. В данном случае 1С является перевалочным пунктом для создания загрузочных файлов в формате CSV. Сам по себе эксель умеет формировать файлы в этом формате, но его нужно дорабатывать, и иногда вручную это сделать нереально. Проблема вот в чем:
Конечная программа распознает CSV при наличии трех пустых столбцов в конце каждой строки, т.е. на выходе это выглядит так :
1;2;3;;;
1;2;3;;;
1С справляется с этой задачей, но при попытке реализовать это в экселе на выходе получается
1;2;3;";;;"
1;2;3;";;;"

Как можно обойти этот момент?

Кроме того влияет ли формат данных внутри исходника экселя, например числовые данные преобразованные в текстовый формат(чтобы не слетали 0 слева) являются ли числовыми в CSV?
Заранее спасибо
Выделение колонок макросом для группировки
 
Да, все работает, спасибо.

Сначала пробовал, запустить такое выражение. Но эксель начал ругаться. С селектом просто видно при запуске макроса что с чем происходит, хоть это и жрет больше ресурсов.
Код
Rows(11).Find(What:="123", After:=ActiveCell, LookIn:=xlFormulas, _     
 LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _    
  MatchCase:=False, SearchFormat:=False).Select  
a = Selection.Column 
Выделение колонок макросом для группировки
 
Добрый день, уважаемые форумчане!
Подскажите как при помощи макроса выделить N-ое количество колонок для последующей группировки. Спасибо
Код
 Sub группировка() 

Rows(11).Select
Selection.Find(What:="123", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Select
a = Selection.Column 

For i = 10 To a ' вот это конечно не то что мне нужно, нужно чтобы выделялись колонки с 10 по ту где находиться "123"
   Columns(i).Select' 
Next
End Sub
Как увеличить частоту выполнения макроса?, Змейка
 
Да стрелки на клавиатуре - огонь)). За это прям спасибище) Удовольствие даже от игры появилось чуток. По модулю классов спрашивать не буду, скорее всего в двух словах не объяснить. Но почитаю, обязательно. Выкладываю последнюю версию со стрелками. Скорость не могу увеличить, кстати. При увеличении змейка самоубийственно рвется вперед, прямо в стену. Как поправить, разберусь завтра)

На собственной змейке больше 30 очков не набираю, капец.
Изменено: serg4356 - 02.02.2015 00:42:07
Как увеличить частоту выполнения макроса?, Змейка
 
Блин точно)) Пробовал ведь, но пытался внутрь скобок запихнуть. А если коэффициент к величине активной ячейки прикрутить, можно несколько уровней сделать. Спасибо)
сумма по уникальным значениям в таблице
 
Вот без сводной таблицы, взял формулу ikki она лаконичнее, как я часто слышу про чужие формулы в сравнении с моими :)
Одной формулой не получается никак у меня. Пример в файле как и просили
Как увеличить частоту выполнения макроса?, Змейка
 
Доброй ночи!
Попробовал сделать змейку из того что знаю. Что нашел, в чем разобрался сам, но прототип рабочий. Хочется чтоб через определенное время скорость в таймере увеличилась. Там сейчас максимум стоит посекундно. Помогите кто чем может) Да и по оптимизации может кто что подскажет.
Изменено: serg4356 - 01.02.2015 23:03:58
сумма по уникальным значениям в таблице
 
Код
=СУММЕСЛИ(Таблица2[уникальное];G15;Таблица2[Часы])/СЧЁТЕСЛИ(Таблица2[уникальное];G15)
 
вставьте в ячейку I15, должно сработать

Протяните до конца таблички и просуммируйте
Изменено: serg4356 - 01.02.2015 13:16:21
сумма по уникальным значениям в таблице
 
Формула =суммесли(диапазон критерия"А2:А31"; собственно критерий из поля "Уникальное"; Диапазон суммирования "С2:С31")
Автоматическое копирование целых строк из первого листа во второй при указании идентичных значений
 
Вы предоставьте список значений столбца Е и их соответствий в столбце G, если я правильно понял можно реализовать формулой =если
Оптимизация выгрузки данных (Scripting.Dictionary)
 
Если кому интересно, частично разобрался с последним вопросом указанным в теме.  "Если существуют две колонки с параметрами(а1,а2,... и 1,2,... как в примере) можно ли как то протянуть формулы уникального значения для кратных или соответствующих по количеству параметров(кроме добавления лишней строки с одним из параметров и учитывая случаи когда исключается ручная сортировка)"

Разобрался в том числе и для кратных и равных по количеству колонок. Макрос, собственно:


Код
Sub asdadsd()
Dim i, j, k, z

 Range("B2").Select
 Selection.CurrentRegion.Select
 i = Selection.Count
 MsgBox "i=" & i

Range(Cells(2, 2), Cells(i + 1, 2)).Select

Selection.Copy

 Range("D2").Select
 Selection.CurrentRegion.Select
 k = Selection.Count
 MsgBox "k=" & k

For j = 1 To (k - 1)

Cells(j * i + 2, 2).Select

Selection.PasteSpecial Paste:=xlPasteValues

Next

Range(Cells(2, 4), Cells(k + 1, 4)).Select
Selection.Copy

For z = 1 To (i - 1)

Cells(z * k + 2, 4).Select

Selection.PasteSpecial Paste:=xlPasteValues

Next 

 Range("B2").Select
  Selection.CurrentRegion.Select
    Application.CutCopyMode = False 'вот тут заканчивается обдуманная часть, далее макрорекордер

    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range("B2"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("Лист1").Sort
        .SetRange Range("B2:B16")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With


End Sub
Если кому нужно, пользуйтесь. Эта часть используется для выставления уникальных пар ключей из строк и колонок таблицы (перед использованием макроса, написанного Hugo. В моем случае нереально делать это руками, так как таблица на 200 строк на 750 колонок. Единственное, что не автоматизировано в моем случае - это перенос значений на другой лист в колонки B и D соответственно, и фильтровка значений строк и колонок, т.к. они ВПРятся по кодам(поэтому иногда выпадают Н/Д ошибки - решается фильтром и удалением в конце).

Не смотря на то, что разобрался с реализацией, принцип не понятен. Иногда чтобы вывести уникальные пары значений сортировка (часть записанная в коде макрорекордером не нужна) а иногда нужна. Хотелось бы объяснить это самому себе не как: "Так сложилось, судьба/не судьба" а как "начиная с n-ого  количества значений колонок, среди пар полученных копированием появляются дубли так как... бла бла". Если кто объяснит эту часть, это круто вообще. :)
Оптимизация выгрузки данных (Scripting.Dictionary)
 
Hugo, спасибо. все по отдельности понятно, в целом - не понятно ничего)) усвоил, что словари полезная  штука, нужно практиковаться.
Вставка блока строк в нужное место, dставка блока с формулами и усл. форматированием
 
Не гуру экселя, но можно, например, так. (тоже макрорекордер)
Оптимизация выгрузки данных (Scripting.Dictionary)
 
Ага. А как словарь понимает что ключи, левая колонка и верхняя строка?
Почему во втором случае UBound(a, 2) а в первом случае только имя массива?
Если я правильно понял логику перед точкой обычно стоит что то, к чему относится свойство или метод перед .Item пусто потому что - это свойство выражения For ii = 2 To UBound(a, 2) или переменной ii?
И какую роль выполняет &"|"&?
Оптимизация выгрузки данных (Scripting.Dictionary)
 
Да, так удобней)
Оптимизация выгрузки данных (Scripting.Dictionary)
 
С СurrentRegion вроде разобрался, ну вроде как с этим проблем быть не должно, с остальным проблемы
Код
With CreateObject("scripting.dictionary": .comparemode = 1  ' тут создаем словарь,  
        a = [e1].currentregion.Value 'тут придаем ему значения которые найдутся через currentregion
        For i = 2 To UBound(a) 'Здесь цикл для всех значений Строк?
            For ii = 2 To UBound(a, 2) 'тут ничего не понятно
                .Item(a(i, 1) & "|" & a(1, ii)) = a(i, ii) 'тут оккультные символы

Next
        Next
 
        a = [l1].currentregion.Value 'здесь мы создаем массив куда попадают данные
        For i = 2 To UBound(a): a(i, 3) = .Item(a(i, 1) & "|" & a(i, 2)): Next ' ничего не понятно
        [l1].currentregion.Value = a
 
    End With
Получается а(i, ii) - это массив(который объявляется вначале как а(), где i - строки, ii - столбцы?
Изменено: serg4356 - 19.01.2015 00:33:19
Макрос заменяющий формулу суммпроизв если это целесообразно, нужен совет по оптимизации таблицы
 
Hugo, большое спасибо, все работает)

Все_просто, да действительно решает задачу, и действительно просто) Но на деле моя задача(не полностью раскрыл в теме) содержала обратный процесс - преобразование таблицы в три колонки, кому интересно сюда.

Alexander88, формула верная (как суммпроизв по сути), слишком требовательна по ресурсам, для моего объема данных около 30 минут ожидания
Страницы: 1 2 След.
Наверх