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

Страницы: 1
Объединение массивов (VBA), Объединить 3 массива в один
 
Прошу помощи написать функцию на VBA для объединение 3 массивов в один.
Прошу посмотреть пример в приложение.
Предположим имеем 3 разных вводных массива и на выводе необходимо получить 1 массив данных.
A
B
C
D
E
      F
        G
12345AX1
12345BX2
12345CX3
12345DX4
12345EX5
Спасибо
Изменено: Teklan - 15.05.2022 00:42:24
Перемножение данных из разных вводных массивов данных.
 
Добрый вечер.
Необходима помощь знатоков.
Имеется расчет сделанный в VBA. Пытаюсь сделать так, чтобы весь расчет был в 1 массиве, но расчет проводится не правильно. Не могу понять в чем ошибка.
В приложение пример.
Имеется функция "test - в примере результат закрашен зеленым фоном" которая производит расчет и выводит массив в 1 строчке.
Если я делаю массив "test_array - в примере результат закрашен желтым фоном" то тогда каждая новая строчка это сумма двух и тд.
Как сделать так, чтобы в массиве "test_array" выводилась не сумма, а результат как в "test".
Изменено: vikttur - 10.09.2021 23:22:07
Установить квадратные оси графика размером 2:1
 
Добрый день.
Длительное время использовал готовое решение (макрос) для установки квадратных осей графика (Scatter).
В приложение сделал пример чтобы было проще понять о чем идет речь.
Данное решение работает для графика с размером сторон 1:1, но появилась необходимость сделать такое же решение, но для графика с соотношением сторон 2:1 или 3:1.
Пытался решить данный вопрос своими силами, но все мои варианты не работают.
Спасибо
При изменение внести значение в ячейку (VBA)
 
Доброй ночи,
Столкнулся с проблемой.
Необходимо установить расчет экселя мануально (кнопкой) т.к. расчетный файл большой и при каждом изменение нужно ждать 1-2сек.
Нужно сделать, чтобы было оповещение, что было изменение и необходимо сделать перерасчет.
В VBA вписал простой код, но выдается ошибка Out of stack space. Явно делаю что-то не так или чего-то не знаю.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Range("Changed") = 0
End Sub

т.е. дальше у меня была мысль форматированием сделать закрашивание ячейки красным если значение 0. При нажатие кнопки расчета соответственно значение будет меняться на 1.
Найти минимальное расстояние между точками
 
Добрый день.
Имеется массив данных из 25 колонок и 50 строк (где 1 и 2 строка координата точек X и Y соответственно).
Необходимо найти минимальное расстояние между всеми точками. Я думал, что единственный вариант это сделать с помощью VBA т.к. необходимо перебрать все возможное варианты?
В примере всего 15 точек, но подразумевается, что может быть вариант и с 625 точками. (Может можно как-то игнорировать пустые значения?)
Расстояние между точками будет по формуле D = ((x_2 - x_1) ^ 2 + (y_2 - y_1) ^ 2) ^ 0.5
Я что-то начал делать в VBA, но у меня нет идей и достаточных знаний чтобы это реализовать. Поэтому обращаюсь за помощью.
Буду благодарен за любую помощь, спасибо.

П.С. Если не достаточно понятно объяснил
VBA - Комментарий в регионе из ячейки
 
Доброй ночи.
Прошу помощи у знатоков. Есть необходимость реализовать следующую задачу:
Нужно поставить комментарий в регионе (по примеру в RANGE(H15:R28)) в ячейку если имеется в ней значение (Или начинается с текста Amount:) и в комментарий внести значение из этой ячейки. Так же необходимо чтобы данный комментарий был динамичным (т.е. если значение пропало то удалился или если значение поменялось, то обновился).
В приложение пример.
Буду благодарен за помощь.

Спасибо заранее.
VBA - Разные действия в цикле
 
Добрый день,
Название темы может не соответствует вопросу, но надеюсь это не проблема.
Имеется код с циклом который создает "FreeShape" по верх точек на графике (ниже часть кода).
Код
 For i = 1 To 6
     
      Set mySrs = myCht.SeriesCollection((i))
      Npts = mySrs.Points.Count
    
      ' first point
      Xnode = Xleft + (mySrs.XValues(Npts) - Xmin) * Xwidth / (Xmax - Xmin)
      Ynode = Ytop + (Ymax - mySrs.Values(Npts)) * Yheight / (Ymax - Ymin)
      Set myBuilder = myCht.Shapes.BuildFreeform(msoEditingAuto, Xnode, Ynode)
    
      ' remaining points
      For Ipts = 1 To Npts
        Xnode = Xleft + (mySrs.XValues(Ipts) - Xmin) * Xwidth / (Xmax - Xmin)
        Ynode = Ytop + (Ymax - mySrs.Values(Ipts)) * Yheight / (Ymax - Ymin)
        myBuilder.AddNodes msoSegmentLine, msoEditingAuto, Xnode, Ynode
      Next
    
      Set myShape = myBuilder.ConvertToShape
      
    With myShape
        ' USE YOUR FAVORITE COLORS HERE
        .Fill.ForeColor.RGB = RGB(255, 151, 151)
        .Line.ForeColor.RGB = RGB(0, 0, 0)
        .Line.Weight = 0
        .Line.Transparency = 1
        .Fill.Transparency = 0.6
    End With
    
    Next
На графике у меня несколько контуров и соответственно есть цикл от 1 до 6. Создается контур с закраской и тд.
Но, возможно ли для первого цикла сделать цвет один для (With myShape), а для остальных циклов другой?

Спасибо
Остановить макрос пока не закончит работу другой
 
Доброй ночи Ув. форумчане.
Беглый поиск по google не привел к положительным результатам =(
Возможно ли остановить работу макроса, который завязан на Worksheet_Change ?
В частности, в Worksheet_Change макрос, который задает графику равные X и Y координаты когда есть изменения (не мой):
Код
With Sheet14.Range("MaxMin")
           SetSquareAxes Sheet4.ChartObjects("Chart 21").Chart, 5, 5, _
                         .Cells(1), .Cells(3), _
                         .Cells(2), .Cells(4)
        End With
 
Имеется другой макрос, который работает с данными в таблице, но проблема в том, что при каждом изменение производится запуск Sub Worksheet_Change что очень, очень тормозит весь процесс.
Возможно ли остановить Worksheet_Change до окончания работы макроса?
Application.ScreenUpdating = False не помогает в данном случае.

Если будет необходим пример то подготовлю, но надеюсь проблема и так ясна. Спасибо
Программа по учету времени сотрудников
 
Добрый вечер.
Необходима помощь/идеи (технической части) реализации программы в среде Excel по учету времени сотрудников, а именно:
Допустим, имеем 20 сотрудников, которые должны вводить учет времени по проделанной работе (на какой тип работы ушло сколько времени). К примеру, 2 часа - собрания, 3 часа работа с бумагами и тд. И так каждый день.
Соответственно в программе (если можно ее так назвать) необходима часть ввода и анализа.
По части анализа самое простое - это с помощью сводной таблицы (Pivot table). Можно сортировать, делать графики и тд.
Проблема по части с вводом данных и организации базы данных.

Имею некоторые идеи:
1) Для каждого человека создается свой файл, где в таблицу вводится вся информация. Проблема данного способа, как объединить всю информацию в 1 таблицу (в 1 базу данных). Сводная таблица не работает с данными из разных таблиц. У Николая Павлова есть пример на VBA, но каждый раз необходимо создавать новый отчет (не удобно).
Так же в данном способе много рутинной работы =(
2) Делать все в 1 файле (базу данных) в которой будут вводить учет времени. Но проблема, что одновременно может открыть только 1 человек.

Был бы рад идеям (направить в правильное русло), как лучше реализовать данную идею по средством Excel.

Заранее спасибо.
Скрыть строки в таблице VBA, Улучшить работу
 
Добрый день,
В приложение пример с таблицей в которой при вводе порядкового номера в столбике "B" автоматически открывается скрытая ячейка, так же при удаление последней строки скрывается лишняя.
Вопрос, можно ли сделать так, чтобы при удаление нескольких строк так же скрывались несколько строк и была только одна свободная. (Иначе сейчас необходимо удалять по порядку чтобы скрыть лишние строки).

Прошу посмотреть пример в приложении.
Организация программы на VBA, Как лучше?
 
Доброй ночи всем.
Столкнулся с проблемой следующего характера.
Предположим у нас есть функция, которая из большей базы данных (10000 строк и тд) выбирает значения из одной строки и разных столбцов. Далее в той же функции, в которой производится выбор данных, был произведен расчет. Но, мне необходимо данный расчет разделить на несколько функций.
Предположим:
1 функция - Находит количество проданных яблок.
2 функция - Выручка
и т.д.
Но, проблема в том, что каждая функция должна использовать выбранные данные из таблицы. Можно организовать выбор данных из таблицы в каждой функции, но это двойная работа, что заметно тормозит процесс.
Была идея организовать все дело в 1 функцию и с помощью CASE сделать отдельный расчет в каждом, но тогда проблема в том, что найденные переменные в CASE 1 не могут быть использованы в CASE 2? (Как пример для определения выручки нам надо знать сорт яблока из 1 функции, CASE 1).

Пример не предоставляю т.к. тогда надо что-то писать отдельно для этого. Надеюсь суть проблемы понятна из вышесказанного.
Спасибо
Поиск и выбор максимального числа на VBA, Ускорить работу макроса
 
Доброй ночи,
Прошу помочь ускорить макрос, который написал для следущей цели:
Имеется диапазон чисел в столбике Length и RESULT.
Изходя из столбика X необходимо найти максимальное число из столбика RESULT между двумя X т.е. X соответствует данным из Length.

Предположим по примеру для X=1 X=5 необходимо найти максимальное число из столбика RESULT (равно 2). Потом для X=5 X=9 и т.д.

Я делал при помощи поиска определяя номер строки для X из столбика Length и дальше определив регион для RESULT нахожу максимальное число.
Но, как оказалось, для больших задачь очень медленно работает. Прошу посмотреть пример.
Может есть у кого-то идеи как можно ускорить макрос? Или возможно у меня совершенно все некорректно?

В приложение сам пример и ниже код.
Очень буду благодарен за помощь. Спасибо.

Код
Function FindMyNumber(Length As Range, X As Range, Out As Integer)
    Dim SearchRange_a(), i&, row_a&, row_b&, Value_num&, max_range%

    Value_num = UBound(X.Value) - 1
    ReDim FindRow_a(1 To Value_num)
    ReDim FindRow_b(1 To Value_num)
    ReDim max_value(1 To Value_num)
    
    For i = 1 To Value_num
        Set FindRow_a(i) = Length.Find(Replace(X(i), ".", "."), LookIn:=xlValues)
        Set FindRow_b(i) = Length.Find(Replace(X(i + 1), ".", "."), LookIn:=xlValues)
        
    max_value(i) = Application.Max(Abs(Application.Max(Sheets("Sheet1").Range("B" & FindRow_a(i).Row, "B" & FindRow_b(i).Row))), _
                                   Abs(Application.Min(Sheets("Sheet1").Range("B" & FindRow_a(i).Row, "B" & FindRow_b(i).Row))))
    Next
    FindMyNumber = max_value(Out)
End Function
Поиск на VBA, Не верно работает макрос
 
Добрый день всем на Planetaexcel.ru,
Помогите,пожалуйста,разобраться в работе макроса (нашел в интернете) который ищет Адрес ячейки.
Если в диапазоне целые чисел, тогда все работает как надо, как только дробные числа, то результат не верный!
Прошу посмотреть пример.

Спасибо!
Страницы: 1
Наверх