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

Страницы: 1
Помощь в построении графика износа подогревателя сетевого (ПС) в Excel, Тема посвящена помощи в создании графика износа ПС в Excel.
 
Здравствуйте, форумчане!

Я столкнулся с проблемой при создании графика износа ПСГ в Excel. Мне нужно наложить график на рисунок, но уже второй день мучаюсь с настройками оси X и не могу добиться нужного результата. При построении точек, как в примере (обозначено стрелочками на картинке), возникают трудности.

Вот пример:
- Точки:
   - Е (15)
   - ф (0,2)
   - G (0,7)

|             |         |
|-------------|---------|
| Е → ф    |         |
| ф → G    |         |

Если у кого-то есть опыт или советы по этому поводу, буду очень благодарен за помощь!
https://files.stroyinf.ru/Data2/1/4294844/4294844609.files/x352.png
Скорее тема будет актуальна для tutochkin, но...
Изменено: MaxGromov - 09.11.2024 07:30:08
Формула или макрос для получения списка ячеек по одному или нескольким критериям, Способ, чтобы диапазоны определялись автоматически по необходимому критерию
 

Здравствуйте, уважаемые участники форума!

Я ищу решение для автоматизации работы с диапазонами в Excel. Мне необходимо создать формулу или макрос, который будет выводить ссылки на ячейки (например, в виде диапазона C2:C14) на основе одного или нескольких критериев.

Пример: =ИНДЕКС(ЛИНЕЙН(C2:C3;B2:B3);F1). Однако диапазоны C2:C3 и B2:B3 нужно вводить вручную. Есть ли способ, чтобы диапазоны определялись автоматически по необходимому критерию (например, по значению в ячейке "35")?

Сейчас я сталкиваюсь с трудностями при ручной обработке данных, и мне бы хотелось, чтобы программа могла автоматически находить и выводить нужные позиции, соответствующие заданным критериям.

Если у кого-то есть готовое решение или идеи по этому поводу, буду очень признателен за помощь

[ Закрыто] Помощь в создании VBA макроса для интерполяции по заданным значениям, Ошибка при интерполяции: помощь в VBA
 

Здравствуйте, уважаемые форумчане!

Обращаюсь к вам с просьбой о помощи в составлении макроса. Ранее я уже поднимал подобный вопрос, но, к сожалению, его не во всех случаях можно применить.

Я столкнулся с задачей, связанной с интерполяцией. Мне необходимо провести интерполяцию по неизвестному значению X при заданном Y (ячейка выделена голубым цветом). Кроме того, мне нужно выполнить интерполяцию, которая включает в себя две стадии: первая — интерполяция по Y, а вторая — по X (ячейка выделена желтым цветом).

Не могли бы вы помочь разобраться с возможными ошибками в расчетах во втором случае? Также хотел бы уточнить, возможно ли создать уникальный макрос на VBA, который будет выполнять обе задачи: интерполяцию по заданному Y и интерполяцию, состоящую из двух этапов (по Y и по X).

Заранее благодарю за вашу помощь!

P/S Можно ли попробовать использовать интерполяцию с различными направлениями диапазона данных? (Там где текст красным цветом выделен)

[ Закрыто] VBA интерполяции, Интерполяция по Y и X в VBA Excel: нужна помощь
 

Здравствуйте, уважаемые форумчане!

Обращаюсь к вам с просьбой о помощи в составлении макроса. Ранее я уже поднимал подобный вопрос, но, к сожалению, его не во всех случаях можно применить.

Я столкнулся с задачей, связанной с интерполяцией. Мне необходимо провести интерполяцию по неизвестному значению X при заданном Y (ячейка выделена голубым цветом). Кроме того, мне нужно выполнить интерполяцию, которая включает в себя две стадии: первая — интерполяция по Y, а вторая — по X (ячейка выделена желтым цветом).

Не могли бы вы помочь разобраться с возможными ошибками в расчетах во втором случае? Также хотел бы уточнить, возможно ли создать уникальный макрос на VBA, который будет выполнять обе задачи: интерполяцию по заданному Y и интерполяцию, состоящую из двух этапов (по Y и по X).

Заранее благодарю за вашу помощь!

P/S Можно ли попробовать использовать интерполяцию с различными направлениями диапазона данных? (Там где текст красным цветом выделен)

Изменено: MaxGromov - 01.11.2024 13:46:14
VBA для интерполяции, Нужна помощь в составлении макроса VBA для интерполяции
 

Здравствуйте, уважаемые форумчане!

Мне нужна помощь в составлении макроса VBA, который сократит существующую формулу интерполяции. Формула выделена оранжевым цветом, а все составляющие в интерполяции — голубым.

Приведенный ниже код не работает, и я был бы очень признателен за вашу помощь в решении этой проблемы. В VBA я пока не очень разбираюсь.

Заранее благодарю за вашу помощь!

Код
Function Интерполяция(ДиапазонA As String, ДиапазонB As String, ДиапазонДанных As String, F19 As Double, F22 As Double, F24 As Double) As Variant
 Dim A As Range, B As Range, Data As Range
 Dim TargetValue As Double
 Dim MinA As Double, MaxA As Double
 Dim RowIndex As Long, ColIndex As Long
 Dim MinB As Double, MaxB As Double
 Dim ColIndexMax As Long
 Dim Y1 As Double, Y2 As Double
 Dim MinA_found As Boolean, MinB_found As Boolean, MaxB_found As Boolean

 ' Устанавливаем диапазоны
 On Error Resume Next
 Set A = Range(ДиапазонA)
 Set B = Range(ДиапазонB)
 Set Data = Range(ДиапазонДанных)
 On Error GoTo 0

 ' Проверяем, что диапазоны корректны
 If A Is Nothing Or B Is Nothing Or Data Is Nothing Then
 Интерполяция = CVErr(xlErrRef) ' Возвращаем ошибку ссылки
 Exit Function
 End If

 ' Проверяем, что все значения числовые
 If Application.WorksheetFunction.Count(A) <> A.Count Or _
 Application.WorksheetFunction.Count(B) <> B.Count Or _
 Application.WorksheetFunction.Count(Data) <> Data.Count Then
 Интерполяция = CVErr(xlErrValue) ' Возвращаем ошибку значения
 Exit Function
 End If

 ' Рассчитываем целевое значение
 TargetValue = Application.WorksheetFunction.Average(F22, F24)

 ' Находим минимальное значение в A, которое больше или равно F19
 On Error Resume Next
 MinA = Application.WorksheetFunction.Min(Evaluate("IF(" & ДиапазонA & ">=" & F19 & "," & ДиапазонA & ", """")"))
 RowIndex = Application.Match(MinA, A, 0)
 On Error GoTo 0

 ' Проверяем, чтобы RowIndex был валиден
 If RowIndex <= 0 Or RowIndex > A.Rows.Count Then
 Интерполяция = CVErr(xlErrValue)
 Exit Function
 End If

 ' Находим минимальное значение в B, которое больше или равно TargetValue
 On Error Resume Next
 MinB = Application.WorksheetFunction.Min(Evaluate("IF(" & ДиапазонB & ">=" & TargetValue & "," & ДиапазонB & ", """")"))
 ColIndex = Application.Match(MinB, B, 0)
 On Error GoTo 0

 ' Проверяем, чтобы ColIndex был валиден
 If ColIndex <= 0 Or ColIndex > B.Columns.Count Then
 Интерполяция = CVErr(xlErrValue)
 Exit Function
 End If

 ' Находим максимальное значение в B, которое меньше или равно TargetValue
 On Error Resume Next
 MaxB = Application.WorksheetFunction.Max(Evaluate("IF(" & ДиапазонB & "<=" & TargetValue & "," & ДиапазонB & ", """")"))
 ColIndexMax = Application.Match(MaxB, B, 0)
 On Error GoTo 0

 ' Проверяем, чтобы ColIndexMax был валиден
 If ColIndexMax <= 0 Or ColIndexMax > B.Columns.Count Then
 Интерполяция = CVErr(xlErrValue)
 Exit Function
 End If

 ' Получаем значения для интерполяции
 Y1 = Data.Cells(RowIndex, ColIndex)
 Y2 = Data.Cells(RowIndex, ColIndexMax)

 ' Проверяем, что TargetValue находится между MinB и MaxB
 If TargetValue < MinB Or TargetValue > MaxB Then
 Интерполяция = CVErr(xlErrValue) ' Возвращаем ошибку значения
 Exit Function
 End If

 ' Интерполяция
 Интерполяция = Y1 + ((TargetValue - MinB) / (MaxB - MinB)) * (Y2 - Y1)
End Function
Изменено: MaxGromov - 30.10.2024 06:18:09
Выделение информации из ячейки при помощи макроса,, Разработать макрос для автоматического вывода в соседние ячейки отдельных позиций.
 
Здравствуйте!

Мне нужно выделить информацию из ячейки, где указаны данные о насосной установке, включая назначение, количество насосов, модель, и тип управления. Можете посоветовать, что нужно изменить в макросе (коде), чтобы все заработало? Прилагаю изображение с маркировкой для наглядности.

Спасибо!
Код
Option Explicit

Public Function РАЗДЕЛИТЬ(Строка As String, Индекс_начало As Long, Индекс_конец As Long) As Variant
    Const DLM = "-"
    If InStr(Строка, DLM) = 0 Then
        РАЗДЕЛИТЬ = Строка
    Else
        Dim arr As Variant
        arr = Split(Строка, DLM)
        
        ReverseIndex Индекс_начало, UBound(arr)
        ReverseIndex Индекс_конец, UBound(arr)
        
        Dim brr As Variant
        ReDim brr(Индекс_начало To Индекс_конец)
        
        Dim yb As Long
        For yb = LBound(brr) To UBound(brr)
            brr(yb) = arr(yb)
        Next
        
        РАЗДЕЛИТЬ = Join(brr, DLM)
    End If
End Function

Private Sub ReverseIndex(ind As Long, iUbo As Long)
    If ind < 0 Then
        ind = iUbo + ind + 1
    Else
        ind = ind - 1
    End If
End Sub
Изменено: MaxGromov - 23.04.2024 13:31:35
Объединение макросов в Excel, Активация двух макросов после нажатия одной кнопкой или комбинацией клавиш.
 
Уважаемые форумчане, обращаюсь к вам с просьбой о помощи в решении небольшой задачи. У меня есть макрос (код ниже), который позволяет использовать макрос под названием "enstaralfgdf" независимо от раскладки. Однако, я, как и многие из нас, ленив и хочу, чтобы при помощи данного кода можно было задействовать два макроса:
Макрос 1: "enstaralfgdf",
Макрос 2: "DeleteEmpty"
(чтобы они срабатывали одной кнопкой или комбинацией). Можете помочь? Буду очень благодарен.
Код
Private Sub Workbook_Open()
On Error Resume Next
Application.OnKey "^ч", "enstaralfgdf"
Application.OnKey "^x", "enstaralfgdf"

End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnKey "^ч", ""
Application.OnKey "^x", ""
End Sub
Выделение информации из ячейки при помощи макроса, Разработать макрос для автоматического вывода в соседние ячейки отдельных позиций.
 

Здравствуйте!

Мне нужно выделить информацию из ячейки, где указаны данные о насосной установке, включая назначение, количество насосов, модель, и тип управления. Можете посоветовать макрос, который сможет сделать это? Прилагаю изображение с маркировкой для наглядности.

Спасибо!

Изменено: MaxGromov - 22.03.2024 13:39:53
Удаление пустых строк и установка необходимого расстояния между таблицами (VBA)
 

Здравствуйте уважаемые форумчане,

Я обращаюсь к вам с просьбой о помощи в исправлении макроса, который автоматически удаляет пустые строки в моей таблице. Необходимо также учесть, что пустые строки идентифицируются по отсутствию данных в столбце "для заказчика", где отсутствует сумма (т.е., пустая ячейка, по формуле). Кроме того, я хотел бы сохранить расстояние между двумя таблицами в одну строку.

Код
Sub enstaralfgd() ' Поиск значений на листе
Dim Rg1 As Range, Rg2 As Range, Rg3 As Range, Rg4 As Range, FindText$, Adres$
Application.ScreenUpdating = False ' отключаем обновление экрана
FindText = "Для заказчика" ' ищем ячейки с таким текстом
    Set Rg1 = ActiveSheet.UsedRange
     
    Set Rg2 = Rg1.Find(FindText, , xlValues, xlWhole) 'Краткая запись для поиска
If Not Rg2 Is Nothing Then 'After можно не указывать
        Adres$ = Rg2.Address
        Do
        Set Rg3 = Rg2.CurrentRegion.Columns(Rg2.Column)
        For I = 1 To Rg3.Cells.Count
If Rg3.Cells(I) = "" Then
    If Rg4 Is Nothing Then Set Rg4 = Rg2.Cells(I) Else Set Rg4 = Union(Rg4, Rg2.Cells(I))
End If
        Next
            Set Rg2 = Rg1.Cells.FindNext(After:=Rg2)
        Loop Until Rg2.Address = Adres
End If
Rg4.EntireRow.Delete
End Sub
Буду очень благодарен, если кто-то может помочь мне в этом вопросе. Если у вас есть идеи или предложения относительно исправления макроса, пожалуйста, поделитесь ими со мной.  
Спасибо заранее за ваше внимание и помощь.
Удалить пустую строку (где нет информации) при помощи макроса, Как создать дополнение к макросу для удаления строк с пустыми ячейками (по формуле)?
 
Здравствуйте!

Я работаю с существующим макросом и столкнулся с проблемой. Мне необходимо создать дополнение к этому макросу, которое будет автоматически удалять пустые строки, ориентируясь на столбец "для заказчика", где отсутствует сумма (т.е. пустая ячейка, по формуле).

У меня уже есть макрос, но я не уверен, как добавить эту функцию удаления строк. Могли бы вы подсказать мне, как это сделать?
Так же дополнительно хотелось бы, чтобы расстояние между двумя таблицами сохранилось в 1 строку

Спасибо большое за вашу помощь!
Код
Sub DelLine()
  Dim i As Long
  Dim diapaz1 As Range
  Dim diapaz2 As Range
Set diapaz1 = Application.Range(ActiveSheet.Range("A1"), _
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))
For i = 1 To diapaz1.Rows.Count
If WorksheetFunction.CountA(diapaz1.Rows(i).EntireRow) = 0 Then
If diapaz2 Is Nothing Then
Set diapaz2 = diapaz1.Rows(i).EntireRow
Else
Set diapaz2 = Application.Union(diapaz2, diapaz1.Rows(i).EntireRow)
End If
End If
Next
If diapaz2 Is Nothing Then
MsgBox "Не найдено ни одной пустой строки!"
Else
diapaz2.[Delete]
End If
End Sub
Исключение пустых строк при выгрузке таблиц, Как создать дополнение к макросу для выгрузки таблиц без пустых строк?
 

Здравствуйте!

Я пытаюсь улучшить существующий макрос, который выполняет выгрузку таблиц после нажатия кнопки "Выгрузить". Моя цель - сделать так, чтобы таблицы выгружались без пустых строк. Это дополнение должно быть способным работать как с одной таблицей, так и с двумя. Как можно реализовать такой функционал в макросе? Мне нужны советы и примеры кода для достижения этой цели. Благодарю за помощь!

P.S.

Диапазон таблицы может меняться. Возможно макрос должен работать с момента когда пустые строки появляются в столбце G и до 0 (доставка) (первой цифры) но как все это реализовать. Ума не приложу

Код
Sub КопированиеДанных()
    Dim wbNew As Workbook
    Dim wsSource As Worksheet
    Dim LastRow As Long
    Dim Rng As Range
     
    Application.ScreenUpdating = False
     
    Set wsSource = ThisWorkbook.Worksheets("Сравнение")
     
    With wsSource
        If .FilterMode = True Then .ShowAllData
        LastRow = .Cells(.Rows.Count, "G").End(xlUp).Row
        Set Rng = .Range("B1:G" & LastRow).SpecialCells(12)
    End With
     
    Set wbNew = Workbooks.Add(xlWBATWorksheet)
     
    With wbNew.Worksheets(1)
        Rng.Copy
        .Range("A1").PasteSpecial xlPasteValues 'копируем значения
        .Range("A1").PasteSpecial xlPasteFormats 'копируем формат
        .Range("A1").PasteSpecial Paste:=xlPasteColumnWidths 'корпируем ширину столбцов
        Set Rng = wsSource.Range("E1:E" & LastRow).SpecialCells(12)
        Rng.Copy Destination:=.Range("D1")
        Set Rng = wsSource.Range("G1:G" & LastRow).SpecialCells(12)
        Rng.Copy Destination:=.Range("F1")
        .UsedRange.EntireRow.AutoFit 'выравнивание высоты строки
        .Rows(1).Font.Bold = True
        .Rows(1).WrapText = True
        .Rows(1).VerticalAlignment = xlCenter
        .Rows(1).HorizontalAlignment = xlCenter
        .Cells(1, 1).Select
        .Name = "Сравнение"
    End With
     
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub
Изменено: MaxGromov - 03.10.2023 15:20:21
Как создать формулу в Excel для определения фирмы на основе комбинаций букв в диапазоне ячеек с текстом?, Мне нужна помощь в настройке формулы в Excel, которая будет анализировать группу ячеек с текстовой информацией и определять, к какой фирме она относится на основе комбинаций букв. Если найдена только одна комбинация, формула должна вывести название фирмы.
 

Здравствуйте!

Мне нужна помощь с созданием формулы в Excel. У меня есть две ячейки с маркировками насосов, и каждая маркировка относится к разной фирме. В маркировке насоса содержится комбинация букв, которая указывает на фирму (данные берутся из листа "Лист1").

Я хотел бы создать формулу, которая будет проверять диапазон ячеек с маркировкой насосов и сравнивать их с перечнем комбинаций букв. Если в рассматриваемом диапазоне есть только одна комбинация, например, относящаяся к фирме CNP, то в шапке должно появиться "CNP"(пример). Если есть несколько комбинаций, то в шапке должно быть "CNP+БРАНТ" (пример).

Заранее спасибо за вашу помощь!

P/S

На примете была примерно такая формула "=ЕСЛИ(ЕЧИСЛО(ПОИСК(Фирма!B1;СЦЕПИТЬ($B$11:B12)))=ИСТИНА;"CNP";ЕСЛИ(ЕЧИСЛО(ПОИСК(Фирма!B2;СЦЕПИТЬ($B$11:B12)))=ИСТИНА;"CNP";ЕСЛИ(ЕЧИСЛО(ПОИСК(Фирма!B3;СЦЕПИТЬ($B$11:B12)))=ИСТИНА;"CNP";ЕСЛИ(ЕЧИСЛО(ПОИСК(Фирма!B4;СЦЕПИТЬ($B$11:B12)))=ИСТИНА;"CNP";ЕСЛИ(ЕЧИСЛО(ПОИСК(Фирма!B5;СЦЕПИТЬ($B$11:B12)))=ИСТИНА;"CNP")))))..." - но она:

1. Громоздкая;

2. Есть определенная трудность с маркировкой насоса ...NES80...- суть в том что формула не может найти именно часть текста NES, как следствие пишет "ЛОЖЬ"

Изменено: MaxGromov - 26.09.2023 08:12:04
Копирование определенного диапазона таблицы с сохранением формул при наличии объединенных ячеек, Помощь с написанием макроса для копирования таблицы с объединенными ячейками и сохранением формул
 

Здравствуйте!

Мне нужна помощь с написанием макроса в Excel. Я пытаюсь скопировать данные из исходной таблицы в новый файл. Исходная таблица содержит объединенные ячейки в заголовке, а также формулы в некоторых столбцах, которые нужно оставить при копировании файла (столбы D и F).  И при копировании в новый файл с помощью макроса, ячейки с формулами (столбы D и F) теряют свой формат и становятся значениями.

Как я могу написать макрос, который сохраняет формулы в ячейках исходной таблицы, даже если в ней есть объединенные ячейки в заголовке?

Спасибо заранее за вашу помощь!

Код
Sub КопированиеДанных()
    Dim wbNew As Workbook
    Dim wsSource As Worksheet
    Dim LastRow As Long
    Dim Rng As Range
     
    Application.ScreenUpdating = False
     
    Set wsSource = ThisWorkbook.Worksheets("Сравнение")
     
    With wsSource
        If .FilterMode = True Then .ShowAllData
        LastRow = .Cells(.Rows.Count, "I").End(xlUp).Row
        Set Rng = .Range("B1:I500" & LastRow).SpecialCells(12)
    End With
     
    Set wbNew = Workbooks.Add(xlWBATWorksheet)
     
    With wbNew.Worksheets(1)
        Rng.Copy
        .Range("A1").PasteSpecial xlPasteValues 'копируем значения
        .Range("A1").PasteSpecial xlPasteFormats 'копируем формат
        .Range("A1").PasteSpecial Paste:=xlPasteColumnWidths 'корпируем ширину столбцов
        Set Rng = wsSource.Range("E1:E500" & LastRow).SpecialCells(12)
        Rng.Copy Destination:=.Range("D1")
        Set Rng = wsSource.Range("G1:G500" & LastRow).SpecialCells(12)
        Rng.Copy Destination:=.Range("F1")
        .UsedRange.EntireRow.AutoFit 'выравнивание высоты строки
        .Rows(1).Font.Bold = True
        .Rows(1).WrapText = True
        .Rows(1).VerticalAlignment = xlCenter
        .Rows(1).HorizontalAlignment = xlCenter
        .Cells(1, 1).Select
        .Name = "Сравнение"
    End With
     
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub
Как вставить данные из ячеек одной книги в другую с помощью макроса, Необходимо перенести данные с сохранением форматов и размеров ячеек в другую книгу с помощью макроса. Также нужно сохранить формулы в тех ячейках/столбцах где указана формула расчета суммы
 
Здравствуйте! Помогите пожалуйста с написанием макроса.  
макрос копирует данные таблицы из исходной таблицы - далее создается новый файл куда копируются значения и формат исходной таблицы
только незадача - просто значения копируется нормально, а вот  есть столбцы где я бы хотел оставить формулы. Но никак не получается это реализовать
Макрос выглядит следующим образом:
Код
Sub КопированиеДанных()
    Workbooks.Add xlWBATWorksheet
    ActiveSheet.Name = "Сравнение" 'обзываем лист новой книги
  
ThisWorkbook.ActiveSheet.Range("B1:G500").SpecialCells(12).Copy
    'ThisWorkbook.ActiveSheet.Range("B1:G500").Copy 'диапазон копирования
    'ActiveSheet.[B1].PasteSpecial
    ActiveSheet.[B1].PasteSpecial Paste:=xlPasteColumnWidths 'корпируем ширину столбцов
    ActiveSheet.[B1].PasteSpecial xlPasteValues 'копируем значения
    ActiveSheet.[B1].PasteSpecial xlPasteFormats 'копируем формат

    ActiveSheet.Rows("1:500").EntireRow.AutoFit 'выравнивание высоты строки
    End Sub

В столбце E и G мне нужно оставить формулу. Для ясности, в скопированной в новую книгу  в столбцах B, C, D и F будут только значения, а в столбцах E и G сохранится формула
 
Изменено: MaxGromov - 22.09.2023 19:34:05
[ Закрыто] Формула в excel, Автоматическая постановка открытых и закрытых позиций
 
Уважаемые знатоки, нужна Ваша помощь по части построения одной формулы.
А именно:
Для ведения открытых и закрытых позиций, требуется автоматическая постановка в колонке "ПОЗИЦИЯ"
Задача состоит в том, в первый день у одного брокера купил позицию на 40 шт., затем на 20 штук. После чего через несколько дней скинул позицию в общем размере 60 шт. Позиция "ЗАКРЫТА". Особенность формулы состоит в том, если сумма купленных равна сумме проданных-позиция закрыта, если не равна-позиция открыта. В список условий входит так же и дата.
Дополнительно, те позиции, которые раннее были открыты, после продажи меняют, категорию с "ОТКРЫТЫХ" на "ЗАКРЫТЫЕ"
Формула уже там стоит, но есть небольшие сомнения по ее работоспособности. Может есть предложения по ее изменению?
Изменено: MaxGromov - 16.06.2023 07:35:44
Страницы: 1
Наверх