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

Страницы: 1 2 3 4 След.
Подгонка изображений по размер ячеек
 
Вроде работает:

Код
Sub InsertImagesToCellsRandomOrder()
    Dim ws As Worksheet
    Dim cell As Range
    Dim imagePath As String
    Dim img As Picture
    Dim fileDialog As fileDialog
    Dim filePaths() As String
    Dim i As Integer
    Dim imgAspectRatio As Double
    Dim randomIndex As Integer
    Dim temp As String
    Dim newWidth As Double, newHeight As Double

    ' Используем активный лист
    Set ws = ActiveSheet

    ' Создаем диалог для выбора изображений
    Set fileDialog = Application.fileDialog(msoFileDialogFilePicker)
    fileDialog.AllowMultiSelect = True
    fileDialog.Filters.Clear
    fileDialog.Filters.Add "Images", "*.jpg; *.jpeg; *.png; *.bmp; *.gif", 1

    ' Показываем диалог
    If fileDialog.Show = -1 Then
        ' Создаем массив для сохранения выбранных путей изображений
        ReDim filePaths(1 To fileDialog.SelectedItems.Count)
        
        ' Сохраняем выбранные пути изображений в массив
        For i = 1 To fileDialog.SelectedItems.Count
            filePaths(i) = fileDialog.SelectedItems(i)
        Next i

        ' Перемешиваем список файлов (алгоритм Fisher-Yates)
        For i = LBound(filePaths) To UBound(filePaths)
            randomIndex = Int((UBound(filePaths) - LBound(filePaths) + 1) * Rnd + LBound(filePaths))
            temp = filePaths(i)
            filePaths(i) = filePaths(randomIndex)
            filePaths(randomIndex) = temp
        Next i

        ' Вставляем изображения в ячейки
        For i = 1 To UBound(filePaths)
            imagePath = filePaths(i)

            ' Проверяем, есть ли еще ячейки для вставки
            If i > Selection.Cells.Count Then Exit For

            Set cell = Selection.Cells(i)
            Set img = ws.Pictures.Insert(imagePath)

            ' Получаем соотношение сторон изображения
            imgAspectRatio = img.Width / img.Height

            ' Определяем новые размеры
            If imgAspectRatio > 1.1 Then
                ' Портретные изображения (ширина больше высоты)
                img.ShapeRange.LockAspectRatio = msoFalse
                img.ShapeRange.Rotation = 90 ' Поворачиваем изображение
                img.Width = cell.Height - 2 ' Ширина изображения будет равна высоте ячейки
                img.Height = img.Width / imgAspectRatio - 2 ' Высота устанавливается по соотношению
            Else
                ' Альбомные изображения
                If imgAspectRatio >= 0.9 And imgAspectRatio <= 1.1 Then
                    ' Если изображение почти квадратное, устанавливаем одинаковые размеры
                    img.Width = cell.Width - 4
                    img.Height = img.Width - 5 ' Устанавливаем высоту равной ширине
                Else
                    If imgAspectRatio > 1 Then
                        img.Width = cell.Width - 2
                        img.Height = img.Width / imgAspectRatio - 2
                    Else
                        img.Height = cell.Height - 2
                        img.Width = img.Height * imgAspectRatio - 2
                    End If
                End If
            End If

            ' Центрируем изображение в ячейке
            img.Top = cell.Top + (cell.Height - img.Height) / 2
            img.Left = cell.Left + (cell.Width - img.Width) / 2
        Next i
    End If
End Sub

Подгонка изображений по размер ячеек
 
В случайном порядке:

Код
Sub InsertImagesToCellsRandomOrder()
    Dim ws As Worksheet
    Dim cell As Range
    Dim imagePath As String
    Dim img As Picture
    Dim fileDialog As fileDialog
    Dim filePaths() As String
    Dim i As Integer
    Dim imgAspectRatio As Double
    Dim cellAspectRatio As Double
    Dim randomIndex As Integer
    Dim temp As String

    ' Укажите лист Excel
    Set ws = ThisWorkbook.ActiveSheet ' Укажите название листа

    ' Создаем диалог для выбора изображений
    Set fileDialog = Application.fileDialog(msoFileDialogFilePicker)
    fileDialog.AllowMultiSelect = True
    fileDialog.Filters.Clear
    fileDialog.Filters.Add "Images", "*.jpg; *.jpeg; *.png; *.bmp; *.gif", 1

    ' Показываем диалог
    If fileDialog.Show = -1 Then
        ' Создаем массив для сохранения выбранных путей изображений
        ReDim filePaths(1 To fileDialog.SelectedItems.Count)
        
        ' Сохраняем выбранные пути изображений в массив
        For i = 1 To fileDialog.SelectedItems.Count
            filePaths(i) = fileDialog.SelectedItems(i)
        Next i

        ' Перемешиваем список файлов (алгоритм Fisher-Yates)
        For i = LBound(filePaths) To UBound(filePaths)
            randomIndex = Int((UBound(filePaths) - LBound(filePaths) + 1) * Rnd + LBound(filePaths))
            temp = filePaths(i)
            filePaths(i) = filePaths(randomIndex)
            filePaths(randomIndex) = temp
        Next i

        ' Вставляем изображения в ячейки
        For i = 1 To UBound(filePaths)
            imagePath = filePaths(i)

            ' Проверяем, есть ли еще ячейки для вставки
            If i > Selection.Cells.Count Then Exit For

            Set cell = Selection.Cells(i)
            Set img = ws.Pictures.Insert(imagePath)

            ' Получаем размеры и пропорции
            imgAspectRatio = img.Width / img.Height
            cellAspectRatio = cell.Width / cell.Height

            ' Масштабируем изображение, сохраняя пропорции
            If imgAspectRatio > cellAspectRatio Then
                img.Width = cell.Width - 1
                img.Height = img.Width / imgAspectRatio - 1
            Else
                img.Height = cell.Height - 1
                img.Width = img.Height * imgAspectRatio - 1
            End If

            ' Центрируем изображение в ячейке
            img.Top = cell.Top + (cell.Height - img.Height) / 2
            img.Left = cell.Left + (cell.Width - img.Width) / 2
        Next i
    End If
End Sub

Подгонка изображений по размер ячеек
 
Добрый день!

В удивительное время мы живем :D ,
ChatGPT извлек все изображения из файла в папку для тестирования, а так же предложил готовое решение по вставке выбранных изображений с сохранением пропорций в выделенные ячейки не изменяя их размер 8-0

Код
Sub InsertImagesToCells()
    Dim ws As Worksheet
    Dim cell As Range
    Dim imagePath As String
    Dim img As Picture
    Dim fileDialog As fileDialog
    Dim filePaths As Variant
    Dim i As Integer
    Dim imgAspectRatio As Double
    Dim cellAspectRatio As Double

    ' Укажите лист Excel
    Set ws = ThisWorkbook.ActiveSheet ' Укажите название листа

    ' Создаем диалог для выбора изображений
    Set fileDialog = Application.fileDialog(msoFileDialogFilePicker)
    fileDialog.AllowMultiSelect = True
    fileDialog.Filters.Clear
    fileDialog.Filters.Add "Images", "*.jpg; *.jpeg; *.png; *.bmp; *.gif", 1

    ' Показываем диалог
    If fileDialog.Show = -1 Then
        ' Сохраняем выбранные пути изображений
        For i = 1 To fileDialog.SelectedItems.Count
            imagePath = fileDialog.SelectedItems(i)

            ' Проверяем, есть ли еще ячейки для вставки
            If i > Selection.Cells.Count Then Exit For

            Set cell = Selection.Cells(i)
            Set img = ws.Pictures.Insert(imagePath)

            ' Получаем размеры и пропорции
            imgAspectRatio = img.Width / img.Height
            cellAspectRatio = cell.Width / cell.Height

            ' Масштабируем изображение, сохраняя пропорции
            If imgAspectRatio > cellAspectRatio Then
                img.Width = cell.Width - 1
                img.Height = img.Width / imgAspectRatio - 1
            Else
                img.Height = cell.Height
                img.Width = img.Height * imgAspectRatio
            End If

            ' Центрируем изображение в ячейке
            img.Top = cell.Top + (cell.Height - img.Height) / 2
            img.Left = cell.Left + (cell.Width - img.Width) / 2
        Next i
    End If
End Sub

Таблица графика отпусков сотрудников в соотношении с диаграммой., Диаграмма графика отпусков.
 
Попробуйте добавлять новые строки не в конце, а в промежуток, между первой и последней строкой, потом, если надо отсортируете.
А так причина в том, что при добавлении новых строк в конец они не попадают в диапазон данных диаграммы, можете конечно каждый раз ручками корректировать данные диаграммы, но проще делать как я написал в начале.
Реестр участников (отслеживание исключение участников), Как отследить наличие участника в реестре и его исключение из реестра
 
В сводной можно вставить временную шкалу, в настройках полей можно указать группировку дат по кварталам и построить график.
Либо добавить столбец в котором будет определятся квартал и так же добавить график.
Почему СЧЕТЕСЛИ считает не существующие дубли?
 
Hugo верно написал.
Код
=СУММПРОИЗВ(($A$1:$A$29=A1)*1)


А СЧЕТЕСЛИ видать формат значения как то корявит, но ошибка конечно интересная
Распределить адреса построчно
 
Цитата
AlienSx написал:
установить все доступные обновления офиса. Если офис не "левый", то, скорее всего, сработает.

увы, санкции, незя:)

поковырял gpt, пришел к такому решению для себя:
Код
let
    Source = Excel.CurrentWorkbook()
{[Name="emails"]}[Content], FirstRow=Source{0}
[Column1],
SplitText=Text.Split(FirstRow, ", "),
ResultTable=Table.FromList(SplitText,Splitter.SplitByNothing(),{"Column1"})
in
    ResultTable


непонятно как работает, но работает, спасибо, инопланетный друг:)
Распределить адреса построчно
 
Цитата
AlienSx написал:
List.Zip

Круто, но не работает, появляется ошибка:
Ошибка выражения: Имя "List.Zip" не распознано. Убедитесь в том, что оно написано верно.

Как вылечить?
Распределить адреса построчно
 
Цитата
rotex42 написал:
расскажите пожалуйста подробнее по пунктам, я не так хорошо разбираюсь

1. выделите адреса
2. во вкладке Данные, найдите Текст по столбцам
3. укажите разделитель "," и укажите место куда поместить обработанные данные
4. выделите результат, скопируйте и в нужном месте нажмите правую кнопку мыши, в параметрах вставки выберите Транспонировать
5. удалить лишние пробелы можно с помощью формулы СЖПРОБЕЛЫ
Распределить адреса построчно
 
1. разделить по столбцам по запятой
2. транспонировать строку с разделенными номерами в столбец
3. удалить лишние пробелы
Получить список USB через VBA
 
del
Изменено: mimoprohodil - 02.09.2024 10:40:55
Автозаполнение календаря данными с другого листа, Автозаполнение календаря данными с другого листа
 
Добрый день!

Вроде так, но это не точно)
Расчет суммы по заданным критериям
 
СУММЕСЛИМН или СУММЕСЛИ
Изменено: mimoprohodil - 26.08.2024 11:42:10
VBA присвоение конкретного элемента из выборки xml
 
Попробуй так

Код
' Предположим, что нужно получить первый элемент из выборки
Set firstElement = xmlSelect.Item(0)

' Теперь можно работать с атрибутами этого элемента
Dim attributeValue
attributeValue = firstElement.getAttribute("yourAttributeName")

' Вывод значения атрибута
MsgBox attributeValue
Как заполнить пустые ячейки
 
del
Изменено: mimoprohodil - 26.08.2024 10:53:59
Как заполнить пустые ячейки
 
Выбираем столбец, нажимаем F5, нажимаем кнопку Выделить, выбираем Пустые ячейки, в строке формул ставим =, выбираем ячейку выше, нажимаем Ctrl+Enter
Кнопка сумма выделенного без возможности считать сумму в скрытых ячейках.
 
или так:
.Subtotal(109, Selection)
Перестали работать макросы после переустановки системы
 
У меня бывало такое несколько раз, не знаю с чем связано, переставали работать макросы и в excel и в access которые только что работали, поначалу начал ковырять, искать причину вылезающих ошибок, потом проверял на резервных рабочих копиях и там такая же ерунда, перезагрузил систему и всё прошло, мистика.

Но думаю, проблема тут другая)
Изменено: mimoprohodil - 26.08.2024 08:57:48
Преобразование нескольких строк в одну
 
Как вариант рассмотреть сводную таблицу с промежуточным итогом
перенос данных из одной таблицы в другую по условию
 
Доброго времени суток!
Это решение конечно кривое, но простое и  рабочее.
Нужно в обоих таблицах добавить два столбца, один для порядкового номера вхождения артикула, второй сцепка этого номера с артикулом, а потом просто ВПР, можно конечно и через массивы, но думаю, если таблица будет очень большой, то массивы будут сильно тормозить.
Помогите настроить форматирование, Помогите настроить форматирование
 
YuraY, Привет!
См. вложение.
Информация по условному форматированию тут
сравнение значение и выбор, не могу разобраться с формулой ЕСЛИ
 
Еще вариант, осваиваю уроки от АlехМ и Павел \Ʌ/ :)

=ПРОСМОТР(2;1/(($C$8:$C$15<=I8)*($D$8:$D$15>=I8));$E$8:$E$15)
Изменено: mimoprohodil - 03.01.2024 10:29:09
Последнее значение по условию
 
Цитата
АlехМ написал:
и нажимаете F9
не знал, гораздо удобнее чем Вычислить формулу

Павел \Ʌ/, АlехМ, спасибо за урок, глядишь и научусь, а пока ваши формулы это колдунство какое-то для меня:)
Последнее значение по условию
 
АlехМ, привет! Объясни, пожалуйста, как это работает, принцип действия.

что я понял:
ИНДЕКС(A$2:A$100;СЧЁТЗ(A:A)) - эта часть определяет нижнюю границу диапазона

A$2:ИНДЕКС(A$2:A$100;СЧЁТЗ(A:A)) - это сам диапазон значений

ПОИСКПОЗ(диапазон значений;D$1:D1;) тут, вроде, ищем какие значения есть в диапазоне D$1:D1, возвращает диапазон с указанием какие позиции были найдены

далее с помощью ЕОШИБКА переворачиваем результат (ИСТИНА - не найдено, ЛОЖЬ - найдено)

затем делим 1 на ИСТИНА/ЛОЖЬ, те позиции которые были не найдены отмечаются 1, а найденные - ошибкой

и наконец, функция ПРОСМОТР берет последнее ненайденное значение из диапазона, что тут значит двойка, можно ли вместо двойки указать 3 или другое число выше 0, на что это влияет?
Изменено: mimoprohodil - 30.12.2023 08:44:36
Как удалить содержимое ячейки, зная ссылку на нее - в другой ячейке
 
еще проще)
Код
Sub Макрос1()
    Range(Split(Range("I9").Formula, "=")(1)).ClearContents
End Sub
Разделение значения по единице в ячейках, Относится к вопросу: как определенное количество товара разбить в ячейки по 1 единице?
 
Код
Sub shishalmyshal()
    Dim LastRow As Integer
    Dim i As Integer
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
    i = 4
    Do
        If Cells(i, 3) > 1 Then
            Rows(i + 1 & ":" & i + Cells(i, 3) - 1).Insert Shift:=xlDown
            Rows(i & ":" & i + Cells(i, 3) - 1).FillDown
            i = i + Cells(i, 3) - 1
            LastRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
        End If
        i = i + 1
    Loop While i < LastRow
End Sub
Преобразование даты
 
Robin-Bad, попробуй формат поменять
Изменить цвет Группы (изменения формы), Элементы управления формы
 
Александр Столяров, мнеб так начальству уметь объяснять почему я не могу выполнить их задание))))
Изменить цвет Группы (изменения формы), Элементы управления формы
 
Вместо элемента формы использовать обычную фигуру помещенную на задний план, при желании можно настроить изменение цвета фигуры в зависимости от выбранных параметров, если нужно конечно.
Дубли значений ячеек, начиная со второго, Отобразить признак дублированного значения ячейки в столбце, начиная с второго
 
aesp,  ну если нужен макрос то вот:
Код
Sub HighlightDuplicates()
    Dim i As Integer

    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        If Application.WorksheetFunction.CountIf(Range("A1:A" & i), Cells(i, 1).Value) > 1 And Cells(i, 1).Value <> "" Then
            Cells(i, 2).Value = "дубль"
        End If
    Next i
    
End Sub
Изменено: mimoprohodil - 25.12.2023 12:02:44
Страницы: 1 2 3 4 След.
Наверх