Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Записи участника (krosav4ig) - Мир MS Excel

Результаты поиска
krosav4ig Дата: Понедельник, 04.03.2019, 20:32 | Сообщение № 421 | Тема: Как ограничить диапазон FormulaR1C1?
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
в начале кода [vba]
Код
dim bool as Boolean
        bool = Application.AutoCorrect.AutoFillFormulasInLists
        Application.AutoCorrect.AutoFillFormulasInLists = False
[/vba]в конце [vba]
Код
Application.AutoCorrect.AutoFillFormulasInLists = bool
[/vba]

[vba]
Код
Sub Date_And_Time_GAZ_2()
    Dim start_time As Date, i As Integer, Arr(), bool As Boolean, calc&
    
    start_time = InputBox("Введите дату, с которой начнётся таблица. Например 01.01.2019")
    Arr = [transpose(transpose(mod(row(r1:r24),24)))/24]
    With Application
        bool = .AutoCorrect.AutoFillFormulasInLists
        .AutoCorrect.AutoFillFormulasInLists = False: calc = .Calculation
        .ScreenUpdating = 0: .EnableEvents = 0: .Calculation = xlCalculationManual
        With .ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(1, 1), Cells(10010, 10)), , xlNo)
            .Name = "ГАЗ"
            For i = 2 To (.ListRows.Count \ 24) * 24 Step 24
                With .ListColumns(1).Range.Cells(i)
                    .Value = start_time + i \ 24
                    With .Offset(, 1).Resize(24)
                        .Value = Arr
                        .NumberFormat = "hh:mm"
                    End With
                    .Offset(23, 2).Resize(, 5).Borders(xlEdgeBottom).Weight = xlThick
                    With .Offset(23, 7).Resize(, 3)
                        .Interior.ColorIndex = 27
                        .Borders.Weight = xlThick
                        .Cells(1, 3).FormulaR1C1 = "= RC[-2]+RC[-1]"
                    End With
                End With
            Next
        End With
        Application.AutoCorrect.AutoFillFormulasInLists = bool
        .ScreenUpdating = 1: .EnableEvents = 1: .Calculation = calc
    End With
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 04.03.2019, 20:34
 
Ответить
Сообщениев начале кода [vba]
Код
dim bool as Boolean
        bool = Application.AutoCorrect.AutoFillFormulasInLists
        Application.AutoCorrect.AutoFillFormulasInLists = False
[/vba]в конце [vba]
Код
Application.AutoCorrect.AutoFillFormulasInLists = bool
[/vba]

[vba]
Код
Sub Date_And_Time_GAZ_2()
    Dim start_time As Date, i As Integer, Arr(), bool As Boolean, calc&
    
    start_time = InputBox("Введите дату, с которой начнётся таблица. Например 01.01.2019")
    Arr = [transpose(transpose(mod(row(r1:r24),24)))/24]
    With Application
        bool = .AutoCorrect.AutoFillFormulasInLists
        .AutoCorrect.AutoFillFormulasInLists = False: calc = .Calculation
        .ScreenUpdating = 0: .EnableEvents = 0: .Calculation = xlCalculationManual
        With .ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(1, 1), Cells(10010, 10)), , xlNo)
            .Name = "ГАЗ"
            For i = 2 To (.ListRows.Count \ 24) * 24 Step 24
                With .ListColumns(1).Range.Cells(i)
                    .Value = start_time + i \ 24
                    With .Offset(, 1).Resize(24)
                        .Value = Arr
                        .NumberFormat = "hh:mm"
                    End With
                    .Offset(23, 2).Resize(, 5).Borders(xlEdgeBottom).Weight = xlThick
                    With .Offset(23, 7).Resize(, 3)
                        .Interior.ColorIndex = 27
                        .Borders.Weight = xlThick
                        .Cells(1, 3).FormulaR1C1 = "= RC[-2]+RC[-1]"
                    End With
                End With
            Next
        End With
        Application.AutoCorrect.AutoFillFormulasInLists = bool
        .ScreenUpdating = 1: .EnableEvents = 1: .Calculation = calc
    End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 04.03.2019 в 20:32
krosav4ig Дата: Понедельник, 04.03.2019, 15:13 | Сообщение № 422 | Тема: Определение надвинутых фигур
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Добрался таки до компа, вспомнил, что .Top отсчитывается сверху, поменял местами 2 знака > и < [vba]
Код
Option Explicit
Sub DetectIntersection()
    Dim a&, b&, c&, d&, e&, f&, g&, h&, i&, j&, k%, arr$(), Фигура2 As Object, sCallerName$
    Const ShName$ = "Oval 1" 'имя Фигуры1
    With Application
        'если макрос был запущен нажатием на шейп, пишем в переменную имя этого шейпа
        If TypeName(.Caller) = "Shape" Then sCallerName = .Caller.Name
        With ActiveSheet 'контекст - активный лист, (все вызовы .Свойство или .Метод на этом уровне вложенности обращаются к нему)
            With .Shapes(ShName) 'контекст - Шейп с именем ShName
                'вычисление координат границ Фигуры1
                a = .Top: b = a + .Height
                c = .Left: d = c + .Width
            End With ' co следующей строки контекст снова активный лист
            'проход циклом по объектам в коллекции shapes
            For Each Фигура2 In .Shapes
                'Если имя Фигуры1 <> имени Фигуры1 и <> sCallerName (имя шейпа, если этот макрос был запущен кликом по нему)
                If Фигура2.Name <> ShName And Фигура2.Name <> sCallerName Then
                    With Фигура2 'контекст - Фигура2
                        e = .Top: f = .Top + .Height
                        g = .Left: h = .Left + .Width
                    End With ' co следующей строки контекст снова активный лист
                    'вычисления медиан вертикальных и горизонтальных координат Фигуры1 и Фигуры2
                    i = Application.Median(a, b, f, e)
                    j = Application.Median(c, d, g, h)
                    'если точка с координатами = полученных медиан находится внутри шейпа ShName
                    If i > a And i < b And j > c And j < d Then
                        'Переопределяем размерность массива
                        ReDim Preserve arr(k)
                        'пишем в последний элемент массива имя Фигуры2
                        arr(k) = Фигура2.Name
                        k = k + 1
                    End If
                End If
            Next
            'область непустых ячеек, граничащих с N4
            With .[N4].CurrentRegion
                'смещаемся на 1 ячейку вниз и выбираем столбец N
                With Intersect(.Cells, .Offset(1), .Parent.Columns("N"))
                    'Очищаем значения выбранных ячеек
                    On Error Resume Next
                    .ClearContents
                    On Error GoTo 0
                End With
                'пишем новые значения из массива arr, если он не пуст
                If i Then .Offset(1).Resize(k).Value = Application.Transpose(arr)
            End With
        End With
    End With
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 04.03.2019, 15:17
 
Ответить
СообщениеДобрался таки до компа, вспомнил, что .Top отсчитывается сверху, поменял местами 2 знака > и < [vba]
Код
Option Explicit
Sub DetectIntersection()
    Dim a&, b&, c&, d&, e&, f&, g&, h&, i&, j&, k%, arr$(), Фигура2 As Object, sCallerName$
    Const ShName$ = "Oval 1" 'имя Фигуры1
    With Application
        'если макрос был запущен нажатием на шейп, пишем в переменную имя этого шейпа
        If TypeName(.Caller) = "Shape" Then sCallerName = .Caller.Name
        With ActiveSheet 'контекст - активный лист, (все вызовы .Свойство или .Метод на этом уровне вложенности обращаются к нему)
            With .Shapes(ShName) 'контекст - Шейп с именем ShName
                'вычисление координат границ Фигуры1
                a = .Top: b = a + .Height
                c = .Left: d = c + .Width
            End With ' co следующей строки контекст снова активный лист
            'проход циклом по объектам в коллекции shapes
            For Each Фигура2 In .Shapes
                'Если имя Фигуры1 <> имени Фигуры1 и <> sCallerName (имя шейпа, если этот макрос был запущен кликом по нему)
                If Фигура2.Name <> ShName And Фигура2.Name <> sCallerName Then
                    With Фигура2 'контекст - Фигура2
                        e = .Top: f = .Top + .Height
                        g = .Left: h = .Left + .Width
                    End With ' co следующей строки контекст снова активный лист
                    'вычисления медиан вертикальных и горизонтальных координат Фигуры1 и Фигуры2
                    i = Application.Median(a, b, f, e)
                    j = Application.Median(c, d, g, h)
                    'если точка с координатами = полученных медиан находится внутри шейпа ShName
                    If i > a And i < b And j > c And j < d Then
                        'Переопределяем размерность массива
                        ReDim Preserve arr(k)
                        'пишем в последний элемент массива имя Фигуры2
                        arr(k) = Фигура2.Name
                        k = k + 1
                    End If
                End If
            Next
            'область непустых ячеек, граничащих с N4
            With .[N4].CurrentRegion
                'смещаемся на 1 ячейку вниз и выбираем столбец N
                With Intersect(.Cells, .Offset(1), .Parent.Columns("N"))
                    'Очищаем значения выбранных ячеек
                    On Error Resume Next
                    .ClearContents
                    On Error GoTo 0
                End With
                'пишем новые значения из массива arr, если он не пуст
                If i Then .Offset(1).Resize(k).Value = Application.Transpose(arr)
            End With
        End With
    End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 04.03.2019 в 15:13
krosav4ig Дата: Понедельник, 04.03.2019, 12:52 | Сообщение № 423 | Тема: Определение надвинутых фигур
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
SergVrn, вместо sh.name нужно фигура2.name
[vba]
Код
Sub Макрос1()
    Dim фигура2 As Shape
    With ActiveSheet
        With .Shapes("Овал 1")
            'вычисление координат границ Овала 1
            'Здесь контекст- ActiveSheet.Shapes("Овал 1") , поэтому следующие 4 строчки отрабатывают корректно
            a = .Top
            b = .Top + .Height
            c = .Left
            d = .Left + .Width
        End With
        'проход фиклом по объектам в коллекции shapes
        For Each фигура2 In .Shapes
            If фигура2.Name <> "Овал 1" Then
                'вычисление координат границ фигуры2 и пересечения с овалом
                'а вот здесь контекст - activesheet и следующие 4 не будут работать (в классе worksheet нету свосйтв top и left)
                'чтобы работало нужно или обернуть их в конструкцию with фигура2 ... end with, или писать e=фигура2.top
                e = .Top
                f = .Top + .Height
                g = .Left
                h = .Left + .Width
                i = Application.Median(a, b, e, f)
                j = Application.Median(c, d, g, h)
                If i < a And i > b And j > c And j < d Then Надвинуто = True
            End If
        Next
    End With
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 04.03.2019, 12:55
 
Ответить
СообщениеSergVrn, вместо sh.name нужно фигура2.name
[vba]
Код
Sub Макрос1()
    Dim фигура2 As Shape
    With ActiveSheet
        With .Shapes("Овал 1")
            'вычисление координат границ Овала 1
            'Здесь контекст- ActiveSheet.Shapes("Овал 1") , поэтому следующие 4 строчки отрабатывают корректно
            a = .Top
            b = .Top + .Height
            c = .Left
            d = .Left + .Width
        End With
        'проход фиклом по объектам в коллекции shapes
        For Each фигура2 In .Shapes
            If фигура2.Name <> "Овал 1" Then
                'вычисление координат границ фигуры2 и пересечения с овалом
                'а вот здесь контекст - activesheet и следующие 4 не будут работать (в классе worksheet нету свосйтв top и left)
                'чтобы работало нужно или обернуть их в конструкцию with фигура2 ... end with, или писать e=фигура2.top
                e = .Top
                f = .Top + .Height
                g = .Left
                h = .Left + .Width
                i = Application.Median(a, b, e, f)
                j = Application.Median(c, d, g, h)
                If i < a And i > b And j > c And j < d Then Надвинуто = True
            End If
        Next
    End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 04.03.2019 в 12:52
krosav4ig Дата: Понедельник, 04.03.2019, 12:12 | Сообщение № 424 | Тема: Определение надвинутых фигур
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
SergVrn, мозг думает одно, руки печатают другое :(
исправил в своем посте

Вам еще нужно будет создать динамический массив
и в цикле, если надвинуто, увеличивать его размерность и добавлять в него имя шейпа
[vba]
Код
redim preserve
[/vba], если что


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 04.03.2019, 12:21
 
Ответить
СообщениеSergVrn, мозг думает одно, руки печатают другое :(
исправил в своем посте

Вам еще нужно будет создать динамический массив
и в цикле, если надвинуто, увеличивать его размерность и добавлять в него имя шейпа
[vba]
Код
redim preserve
[/vba], если что

Автор - krosav4ig
Дата добавления - 04.03.2019 в 12:12
krosav4ig Дата: Понедельник, 04.03.2019, 08:52 | Сообщение № 425 | Тема: Определение надвинутых фигур
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[vba]
Код
dim фигура2 as shape
with activesheet
    with .shapes("Овал 1")
        'вычисление координат границ Овала 1
    end with
    'проход циклом по объектам в коллекции shapes
    for each фигура2 in .shapes
        if фигура2.name<>"Овал 1" then
           'вычисление координат границ фигуры2 и пересечения с овалом
        endif
    next
end with
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Понедельник, 04.03.2019, 12:05
 
Ответить
Сообщение[vba]
Код
dim фигура2 as shape
with activesheet
    with .shapes("Овал 1")
        'вычисление координат границ Овала 1
    end with
    'проход циклом по объектам в коллекции shapes
    for each фигура2 in .shapes
        if фигура2.name<>"Овал 1" then
           'вычисление координат границ фигуры2 и пересечения с овалом
        endif
    next
end with
[/vba]

Автор - krosav4ig
Дата добавления - 04.03.2019 в 08:52
krosav4ig Дата: Воскресенье, 03.03.2019, 16:21 | Сообщение № 426 | Тема: Ввод в TextBox числовых значений.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Amator, вместо textbox используйте microsoft masked edit control 6.0 (msmask32.ocx 6.0.84.18), в нем можно установить маску ввода


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеAmator, вместо textbox используйте microsoft masked edit control 6.0 (msmask32.ocx 6.0.84.18), в нем можно установить маску ввода

Автор - krosav4ig
Дата добавления - 03.03.2019 в 16:21
krosav4ig Дата: Воскресенье, 03.03.2019, 16:14 | Сообщение № 427 | Тема: Как оформлять сообщения?
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Пожалуйста :)
Кстати, не так давно наткнулся на тему test, меня заинтересовали пост #13 и #14. Возник вопрос, у нас реализованы bb-коды таблиц? Если да, то какой синтаксис (тег самой таблицы, теги для tr, td/th, есть ли colspan/rowspan). есть мысли по генерации bb-кодов при вставке скопированной таблицы (из excel/word/веб-страницы) из буфера обмена.


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеПожалуйста :)
Кстати, не так давно наткнулся на тему test, меня заинтересовали пост #13 и #14. Возник вопрос, у нас реализованы bb-коды таблиц? Если да, то какой синтаксис (тег самой таблицы, теги для tr, td/th, есть ли colspan/rowspan). есть мысли по генерации bb-кодов при вставке скопированной таблицы (из excel/word/веб-страницы) из буфера обмена.

Автор - krosav4ig
Дата добавления - 03.03.2019 в 16:14
krosav4ig Дата: Воскресенье, 03.03.2019, 15:47 | Сообщение № 428 | Тема: Как оформлять сообщения?
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Нана123, теги ( bb-коды) - это инструмент для форматирования текста поста и внедрения различных элементов в сообщения (графика, видео, ссылки). Видео в первом посте не заметили? ссылка на то видео - тег URL .
а вот это же видео, вставленное тегом video
Тут также приведены примеры использования тегов.
При написании этого поста я использовал 1 тег b, 3 тега url, 1 тег img, 1 тег video


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеНана123, теги ( bb-коды) - это инструмент для форматирования текста поста и внедрения различных элементов в сообщения (графика, видео, ссылки). Видео в первом посте не заметили? ссылка на то видео - тег URL .
а вот это же видео, вставленное тегом video
Тут также приведены примеры использования тегов.
При написании этого поста я использовал 1 тег b, 3 тега url, 1 тег img, 1 тег video

Автор - krosav4ig
Дата добавления - 03.03.2019 в 15:47
krosav4ig Дата: Воскресенье, 03.03.2019, 15:26 | Сообщение № 429 | Тема: Нет списка чтобы выбрать лист из общего количества
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
разве не ПКМ?

ога, заплетык языкается, право с левом перепутал :(


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Воскресенье, 03.03.2019, 15:27
 
Ответить
Сообщение
разве не ПКМ?

ога, заплетык языкается, право с левом перепутал :(

Автор - krosav4ig
Дата добавления - 03.03.2019 в 15:26
krosav4ig Дата: Воскресенье, 03.03.2019, 14:00 | Сообщение № 430 | Тема: Сосчитать нажатые ToggleButton
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Бубенчик, а это ужо другая тема


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеБубенчик, а это ужо другая тема

Автор - krosav4ig
Дата добавления - 03.03.2019 в 14:00
krosav4ig Дата: Воскресенье, 03.03.2019, 13:55 | Сообщение № 431 | Тема: Нет списка чтобы выбрать лист из общего количества
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Нана123, ПКМ по любой стрелке слева от ярлычков листов


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Воскресенье, 03.03.2019, 17:26
 
Ответить
СообщениеНана123, ПКМ по любой стрелке слева от ярлычков листов

Автор - krosav4ig
Дата добавления - 03.03.2019 в 13:55
krosav4ig Дата: Воскресенье, 03.03.2019, 13:10 | Сообщение № 432 | Тема: Определение надвинутых фигур
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[vba]
Код
a=координаты верхней границы 1 фигуры
b=координаты нижней границы 1 фигуры
с=координаты левой границы 1 фигуры
d=координаты правой границы 1 фигуры
e=координаты верхней границы 2 фигуры
f=координаты нижней границы 2 фигуры
g=координаты левой границы 2 фигуры
h=координаты правой границы 2 фигуры
i=application.median(a,b,e,f)
j=application.median(c,d,g,h)
If i < a And i > b And j > c And j < d then Надвинуто=true
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Воскресенье, 03.03.2019, 13:11
 
Ответить
Сообщение[vba]
Код
a=координаты верхней границы 1 фигуры
b=координаты нижней границы 1 фигуры
с=координаты левой границы 1 фигуры
d=координаты правой границы 1 фигуры
e=координаты верхней границы 2 фигуры
f=координаты нижней границы 2 фигуры
g=координаты левой границы 2 фигуры
h=координаты правой границы 2 фигуры
i=application.median(a,b,e,f)
j=application.median(c,d,g,h)
If i < a And i > b And j > c And j < d then Надвинуто=true
[/vba]

Автор - krosav4ig
Дата добавления - 03.03.2019 в 13:10
krosav4ig Дата: Воскресенье, 03.03.2019, 11:33 | Сообщение № 433 | Тема: Сосчитать нажатые ToggleButton
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте[vba]
Код
Dim i&
For Each obj In Sheets(2).OLEObjects
    i = i - (obj.progID = "Forms.ToggleButton.1" And obj.Object)
Next
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте[vba]
Код
Dim i&
For Each obj In Sheets(2).OLEObjects
    i = i - (obj.progID = "Forms.ToggleButton.1" And obj.Object)
Next
[/vba]

Автор - krosav4ig
Дата добавления - 03.03.2019 в 11:33
krosav4ig Дата: Воскресенье, 03.03.2019, 07:58 | Сообщение № 434 | Тема: Выборка данных из строк
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[vba]
Код
=ArrayFormula(QUERY(SPLIT(TRANSPOSE(SPLIT(TEXTJOIN("|",1,If(ROW(A8:A15)-LOOKUP(ROW(A8:A15),IF(A8:A15<>"",ROW(A8:A15)),ROW(A8:A15))<3,if(B8:I15<>"",LOOKUP(ROW(A8:A15),IF(A8:A15<>"",ROW(A8:A15)),A8:A15)&":"&IFERROR(VLOOKUP(B8:I15,I18:J22,2,),),""),"")),"|")),":"),"select Col1,sum(Col2) group by Col1 label Col1 'Пациент', sum(Col2) 'Сумма'",0))
[/vba]или[vba]
Код
=ArrayFormula(QUERY(SPLIT(TRANSPOSE(SPLIT(TEXTJOIN("|",1,If(ROW(A8:A15)-LOOKUP(ROW(A8:A15),IF(A8:A15<>"",ROW(A8:A15)),ROW(A8:A15))<3,if(B8:I15<>"",LOOKUP(ROW(A8:A15),IF(A8:A15<>"",ROW(A8:A15)),A8:A15)&":"&B8:I15,""),"")),"|")),":"),"select Col1,Col2,count(Col2) group by Col1,Col2 label Col1 'Пациент', Col2 'Процедура', count(Col2) 'Количество'",0))
[/vba]или сводная по формуле[vba]
Код
=ArrayFormula({{"Пациент","Процедура","Стоимость"};SPLIT(TRANSPOSE(SPLIT(TEXTJOIN("|",1,If(ROW(A8:A15)-LOOKUP(ROW(A8:A15),IF(A8:A15<>"",ROW(A8:A15)),ROW(A8:A15))<3,if(B8:I15<>"",LOOKUP(ROW(A8:A15),IF(A8:A15<>"",ROW(A8:A15)),A8:A15)&":"&B8:I15&":"&VLOOKUP(B8:I15,I18:J22,2,),""),"")),"|")),":")})
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Воскресенье, 03.03.2019, 08:06
 
Ответить
Сообщение[vba]
Код
=ArrayFormula(QUERY(SPLIT(TRANSPOSE(SPLIT(TEXTJOIN("|",1,If(ROW(A8:A15)-LOOKUP(ROW(A8:A15),IF(A8:A15<>"",ROW(A8:A15)),ROW(A8:A15))<3,if(B8:I15<>"",LOOKUP(ROW(A8:A15),IF(A8:A15<>"",ROW(A8:A15)),A8:A15)&":"&IFERROR(VLOOKUP(B8:I15,I18:J22,2,),),""),"")),"|")),":"),"select Col1,sum(Col2) group by Col1 label Col1 'Пациент', sum(Col2) 'Сумма'",0))
[/vba]или[vba]
Код
=ArrayFormula(QUERY(SPLIT(TRANSPOSE(SPLIT(TEXTJOIN("|",1,If(ROW(A8:A15)-LOOKUP(ROW(A8:A15),IF(A8:A15<>"",ROW(A8:A15)),ROW(A8:A15))<3,if(B8:I15<>"",LOOKUP(ROW(A8:A15),IF(A8:A15<>"",ROW(A8:A15)),A8:A15)&":"&B8:I15,""),"")),"|")),":"),"select Col1,Col2,count(Col2) group by Col1,Col2 label Col1 'Пациент', Col2 'Процедура', count(Col2) 'Количество'",0))
[/vba]или сводная по формуле[vba]
Код
=ArrayFormula({{"Пациент","Процедура","Стоимость"};SPLIT(TRANSPOSE(SPLIT(TEXTJOIN("|",1,If(ROW(A8:A15)-LOOKUP(ROW(A8:A15),IF(A8:A15<>"",ROW(A8:A15)),ROW(A8:A15))<3,if(B8:I15<>"",LOOKUP(ROW(A8:A15),IF(A8:A15<>"",ROW(A8:A15)),A8:A15)&":"&B8:I15&":"&VLOOKUP(B8:I15,I18:J22,2,),""),"")),"|")),":")})
[/vba]

Автор - krosav4ig
Дата добавления - 03.03.2019 в 07:58
krosav4ig Дата: Суббота, 02.03.2019, 07:34 | Сообщение № 435 | Тема: Программно растянуть умную таблицу до конечных данных
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Исправил


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеИсправил

Автор - krosav4ig
Дата добавления - 02.03.2019 в 07:34
krosav4ig Дата: Пятница, 01.03.2019, 19:10 | Сообщение № 436 | Тема: Программно растянуть умную таблицу до конечных данных
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Сергей13, эт я, наверно, еще не проснулся, когда писал. Щас до компа доеду, исправлю. Исправил


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Пятница, 01.03.2019, 19:30
 
Ответить
СообщениеСергей13, эт я, наверно, еще не проснулся, когда писал. Щас до компа доеду, исправлю. Исправил

Автор - krosav4ig
Дата добавления - 01.03.2019 в 19:10
krosav4ig Дата: Пятница, 01.03.2019, 08:49 | Сообщение № 437 | Тема: Извлечь слова по условию
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Udf взял тут
[vba]
Код
=ПОДСТАВИТЬ(СЖПРОБЕЛЫ(ПОДСТАВИТЬ(stringRegExpReplace(A2;"[\s\S]*?((?:[\w\d]{1,4}\.){4}(?:[\w\d&]{5,6}\.){2}\d{3}\.DC\.\d{4})|[\s\S]";"$1,";1;1;1);",";" "));" ";", ")
[/vba]
К сообщению приложен файл: _2.xls (77.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеUdf взял тут
[vba]
Код
=ПОДСТАВИТЬ(СЖПРОБЕЛЫ(ПОДСТАВИТЬ(stringRegExpReplace(A2;"[\s\S]*?((?:[\w\d]{1,4}\.){4}(?:[\w\d&]{5,6}\.){2}\d{3}\.DC\.\d{4})|[\s\S]";"$1,";1;1;1);",";" "));" ";", ")
[/vba]

Автор - krosav4ig
Дата добавления - 01.03.2019 в 08:49
krosav4ig Дата: Пятница, 01.03.2019, 08:17 | Сообщение № 438 | Тема: Включение паузы внутри работающего скрипта.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Как это исправить ?
В модуль ЭтаКника поместить код [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Evaluate("Кнопка 5").OnAction = "test"
End Sub
[/vba] переназначить макрос кнопке или в окно immediate ввести [vba]
Код
Evaluate("Кнопка 5").OnAction = "test"
[/vba] и нажать Enter


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
Как это исправить ?
В модуль ЭтаКника поместить код [vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Evaluate("Кнопка 5").OnAction = "test"
End Sub
[/vba] переназначить макрос кнопке или в окно immediate ввести [vba]
Код
Evaluate("Кнопка 5").OnAction = "test"
[/vba] и нажать Enter

Автор - krosav4ig
Дата добавления - 01.03.2019 в 08:17
krosav4ig Дата: Пятница, 01.03.2019, 08:10 | Сообщение № 439 | Тема: Программно растянуть умную таблицу до конечных данных
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[vba]
Код
Sub sortirovka() 'Раскрытие таблицы
    Dim r As Range, i&, j&, v As Variant, arr() As Variant
    With [Таблица1].ListObject
        With .Range.CurrentRegion
            If .Rows.Count < 2 Then Exit Sub
            ReDim Preserve arr(1 To .Rows.Count - 1, 1 To .Columns.Count)
            For j = 1 To .Columns.Count
                For Each r In .Columns(j)
                    i = 1
                    For Each v In BubbleSort(Intersect(r, r.Offset(1)).Value)
                        arr(i, j) = v
                        i = i + 1
            Next v, r, j
            Intersect(.Offset(1), .Cells).ClearContents
            .Cells(2, 1).Resize(i - 1, j - 1) = arr
        End With
        .Resize .Range.CurrentRegion
    End With
End Sub
Function BubbleSort(v As Variant) As Variant
    Dim i&, j&, b As Boolean
    If Not IsArray(v) Then BubbleSort = Array(v): Exit Function
    b = UBound(v) >= UBound(v, 2)
    For i = 1 To UBound(v, IIf(b, 1, 2)) - 1: For j = i To UBound(v, IIf(b, 1, 2))
        swap v(IIf(b, i, 1), IIf(b, 1, i)), v(IIf(b, j, 1), IIf(b, 1, j))
    Next j, i
    BubbleSort = v
End Function
Sub swap(ByRef a As Variant, b As Variant)
    If a < b Xor (a <> "") And (b <> "") Then: Dim c: c = a: a = b: b = c
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Суббота, 02.03.2019, 07:31
 
Ответить
Сообщение[vba]
Код
Sub sortirovka() 'Раскрытие таблицы
    Dim r As Range, i&, j&, v As Variant, arr() As Variant
    With [Таблица1].ListObject
        With .Range.CurrentRegion
            If .Rows.Count < 2 Then Exit Sub
            ReDim Preserve arr(1 To .Rows.Count - 1, 1 To .Columns.Count)
            For j = 1 To .Columns.Count
                For Each r In .Columns(j)
                    i = 1
                    For Each v In BubbleSort(Intersect(r, r.Offset(1)).Value)
                        arr(i, j) = v
                        i = i + 1
            Next v, r, j
            Intersect(.Offset(1), .Cells).ClearContents
            .Cells(2, 1).Resize(i - 1, j - 1) = arr
        End With
        .Resize .Range.CurrentRegion
    End With
End Sub
Function BubbleSort(v As Variant) As Variant
    Dim i&, j&, b As Boolean
    If Not IsArray(v) Then BubbleSort = Array(v): Exit Function
    b = UBound(v) >= UBound(v, 2)
    For i = 1 To UBound(v, IIf(b, 1, 2)) - 1: For j = i To UBound(v, IIf(b, 1, 2))
        swap v(IIf(b, i, 1), IIf(b, 1, i)), v(IIf(b, j, 1), IIf(b, 1, j))
    Next j, i
    BubbleSort = v
End Function
Sub swap(ByRef a As Variant, b As Variant)
    If a < b Xor (a <> "") And (b <> "") Then: Dim c: c = a: a = b: b = c
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 01.03.2019 в 08:10
krosav4ig Дата: Пятница, 01.03.2019, 06:10 | Сообщение № 440 | Тема: Включение паузы внутри работающего скрипта.
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте.
Как-то так
[vba]
Код
Option Explicit
Dim b As Boolean

...

Sub Obj1ToObj2_1(Obj1, Obj2, Optional Steps = 20)
  Const dt# = 0.02
  Dim x1#, x2#, y1#, y2#, x#, y#, t!
  Dim l1#, t1#, w1#, h1#, l2#, t2#, w2#, h2#
  Do: t = Timer: Do: DoEvents: Loop While Timer < t + dt: Loop While b
  With Obj1
    l1 = .Left: t1 = .Top: w1 = .Width: h1 = .Height
  End With
  l2 = Obj2(1, 1): t2 = Obj2(1, 2)
'  With Obj2
'    l2 = .Left: t2 = .Top: w2 = .Width: h2 = .Height
'  End With
  x1 = l1 + w1 / 2
  y1 = t1 + h1 / 2
  x2 = l2 ' + w2 / 2
  y2 = t2 ' + h2 / 2
  With Obj1
    For x = x1 To x2 Step (x2 - x1) / Steps
      y = (x2 * y1 - x1 * y2 - (y1 - y2) * x) / (x2 - x1)
      .Left = x - w1 / 2
      .Top = y - h1 / 2
      t = Timer + dt
      While Timer < t:  Wend
      DoEvents:
    Next
    x = x2: y = y2: .Left = x - w1 / 2: .Top = y - h1 / 2
  End With
  b = True
End Sub
Sub test()
    Dim lr&, i&, sTmp$
    On Error Resume goto err
    With Evaluate(Application.Caller)
        sTmp$ = .OnAction
        .OnAction = "toggle"
        With Лист1
            lr = .Cells(Rows.Count, "n").End(xlUp).Row
            For i = 6 To lr
                Obj1ToObj2_1 .Shapes("Oval 1"), .Cells(i, "n").Resize(, 2).Value
            Next i
        End With
err:    .OnAction = sTmp
    End With
    MsgBox "Конец"
End Sub
Private Sub toggle()
    b = Not b
End Sub
[/vba]
К сообщению приложен файл: 5451360.xlsm (26.2 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Пятница, 01.03.2019, 06:58
 
Ответить
СообщениеЗдравствуйте.
Как-то так
[vba]
Код
Option Explicit
Dim b As Boolean

...

Sub Obj1ToObj2_1(Obj1, Obj2, Optional Steps = 20)
  Const dt# = 0.02
  Dim x1#, x2#, y1#, y2#, x#, y#, t!
  Dim l1#, t1#, w1#, h1#, l2#, t2#, w2#, h2#
  Do: t = Timer: Do: DoEvents: Loop While Timer < t + dt: Loop While b
  With Obj1
    l1 = .Left: t1 = .Top: w1 = .Width: h1 = .Height
  End With
  l2 = Obj2(1, 1): t2 = Obj2(1, 2)
'  With Obj2
'    l2 = .Left: t2 = .Top: w2 = .Width: h2 = .Height
'  End With
  x1 = l1 + w1 / 2
  y1 = t1 + h1 / 2
  x2 = l2 ' + w2 / 2
  y2 = t2 ' + h2 / 2
  With Obj1
    For x = x1 To x2 Step (x2 - x1) / Steps
      y = (x2 * y1 - x1 * y2 - (y1 - y2) * x) / (x2 - x1)
      .Left = x - w1 / 2
      .Top = y - h1 / 2
      t = Timer + dt
      While Timer < t:  Wend
      DoEvents:
    Next
    x = x2: y = y2: .Left = x - w1 / 2: .Top = y - h1 / 2
  End With
  b = True
End Sub
Sub test()
    Dim lr&, i&, sTmp$
    On Error Resume goto err
    With Evaluate(Application.Caller)
        sTmp$ = .OnAction
        .OnAction = "toggle"
        With Лист1
            lr = .Cells(Rows.Count, "n").End(xlUp).Row
            For i = 6 To lr
                Obj1ToObj2_1 .Shapes("Oval 1"), .Cells(i, "n").Resize(, 2).Value
            Next i
        End With
err:    .OnAction = sTmp
    End With
    MsgBox "Конец"
End Sub
Private Sub toggle()
    b = Not b
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 01.03.2019 в 06:10
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!