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

Страницы: 1 2 След.
Как вытащить артикул из текста, Как вытащить артикул из текста
 
Ребята, я сам допёр))
Формула будет гласить так:
=СЖПРОБЕЛЫ(ПРАВБ(ПОДСТАВИТЬ(A2;" ";"         ");15))
Как вытащить артикул из текста, Как вытащить артикул из текста
 
Добрый день!
Эксель 2007.
Подскажите, пожалуйста, формулу - как вытащить артикул из текста, если он расположен после пробела в конце.
Во вложении прикрепляю файл.
К примеру:
Датчик давления шин GR12563341
Нужно, чтобы остался GR12563341
То есть, не важно какой длины текст, артикулы расположены в конце, после последнего пробела.
Заранее благодарен!
Формула сравнения цен и её варьирования, Формула сравнения цен и её варьирования
 
Всё решилось вот так:
Код
=ЕСЛИ(C2<A2;C2;МАКС(A2*0,98;B2))
Формула сравнения цен и её варьирования, Формула сравнения цен и её варьирования
 
Но формула =MAX(A2*0,98;B2) не учитывает запрет на увеличение текущей цены (колонка C). Можно в формулу добавить как-то это условие?
Изменено: Olegas - 25.01.2026 19:57:46
Формула сравнения цен и её варьирования, Формула сравнения цен и её варьирования
 
Да, согласен, вариант у bigorq правильный. Спасибо!
А если вот такой вариант:
1) ЕСЛИ наша текущая цена (колонка C) больше или равна наименьшей цене конкурентов (колонка A), то нужно уменьшить текущую цену (колонка C) на 2% ниже цены конкурентов (колонка A), но не ниже, чем наша минимально разрешенная цена (колонка B);
2) А ЕСЛИ наша цена меньше конкурентной и разница, при этом, составляет меньше 2%, то нужно уменьшить текущую цену (колонка C) на 2% ниже цены конкурентов (колонка A), но не ниже, чем наша минимально разрешенная цена (колонка B);
3) НО полученная цена не должна быть выше текущей (колонка C).

То есть, в случае, когда опустить цену мы можем, но увеличить текущую нельзя. Можете подсказать?
Изменено: Olegas - 25.01.2026 19:34:08
Формула сравнения цен и её варьирования, Формула сравнения цен и её варьирования
 
Доброго всем времени суток!
Эксель 2007.
Во вложении прикладываю таблицу. Нужна Ваша помощь в создании следующих формул:
1) ЕСЛИ наша текущая цена (колонка C) больше или равна наименьшей цене конкурентов (колонка A), то нужно уменьшить текущую цену (колонка C) на 2% ниже цены конкурентов (колонка A), но не ниже, чем наша минимально разрешенная цена (колонка B);
2) ЕСЛИ наша текущая цена (колонка C) меньше, чем цена у конкурентов (колонка A), то нужно от наименьшей цены у конкурентов (колонка A) снизиться на 2%, но не ниже, чем наша минимально разрешенная цена (колонка B);
3) КОМБИНИРОВАННАЯ ФОРМУЛА первого и второго действия (одна формула, объединяющая сразу 2 варианта).
Заранее благодарен за помощь.
Изменено: Olegas - 25.01.2026 16:27:56
Импорт листа из другой книги экселя, Импорт листа из другой книги экселя
 
Прикрепляю 2 тестовых файла. При открытом файле "1121" запускаю вышеуказанный длинный скрипт. Во время проведения скрипта, открывается файл "Замены", копируется в буфер лист и закрывается, не вставляя, при этом, ничего в файл "1121" на лист "Замены".
Проблема в коде вставки.
Заранее благодарен и очень признателен за помощь!
Изменено: Olegas - 13.01.2026 23:05:27
Импорт листа из другой книги экселя, Импорт листа из другой книги экселя
 
Еще третий метод пробовал: включил запись макроса, открыл книгу "Замены", скопировал все ячейки, перешел в книгу назначения, перешел на лист "Замены", вставил ячейки, закрыл книгу "Замены", остановил макрос.

Попробовал прогнать макрос...аналогично
Импорт листа из другой книги экселя, Импорт листа из другой книги экселя
 
Цитата
написал:
Вы удалили перед запуском макроса лист "Замены" из открытой книги, если он там был?
И удалял - ничего не работает, и добавлял, всё равно не работает.

Написал еще вот такой код:
Код
Sub Макрос3()
'
' Макрос3 Макрос
'
    Dim SourceWB As Workbook, DestWB As Workbook
    Dim SourceSheet As Worksheet, DestSheet As Worksheet
    Dim SourceFileName As String, DestFileName As String
    SourceFileName = "C:\Users\OLEGAS\Desktop\Замены.xlsx"
    Const SourceSheetName As String = "Лист1"
    Const DestSheetName As String = "Замены"
    Set SourceWB = Workbooks.Open(SourceFileName)
    Set SourceSheet = SourceWB.Sheets(SourceSheetName)
    Set DestSheet = ThisWorkbook.Sheets(DestSheetName)
    SourceSheet.Cells.Copy
    DestSheet.Range("A1").PasteSpecial Paste:=xlPasteAll
    Application.CutCopyMode = False
    SourceWB.Close SaveChanges:=False
    Set SourceSheet = Nothing
    Set DestSheet = Nothing
    Set SourceWB = Nothing
    Set DestWB = Nothing
End Sub

Книга открывается, закрывается, но ничего не вставляется на лист "Замены" почему-то.
Импорт листа из другой книги экселя, Импорт листа из другой книги экселя
 
Файл "Замены" открывается, но дальше код не работает. Почему-то выделяет желтым первую строчку...не могу понять, перепробовал многое, не помогло.

Запись через макрорекордер создает много лишних кодов. Хотелось бы, как в предложенном варианте, тремя строчками обойтись.
Импорт листа из другой книги экселя, Импорт листа из другой книги экселя
 
Здравствуйте!
Эксель 2007.
Подскажите, пожалуйста, код макроса, который бы импортировал лист "Лист1" из книги с названием "Замены", расположенной на рабочем столе (C:Users\OLEGAS\Desktop\Замены.xlsx) в открытую книгу на лист "Замены".
Спасибо!
Поиск средней цены по условию, Поиск средней цены по условию
 
Да, я так и сделал ранее. Спасибо!)
Поиск средней цены по условию, Поиск средней цены по условию
 
А, можно ли Вашу формулу скорректировать так, чтобы она действовала не на 42 строки, а на все имеющиеся?
Потому что, в другой таблице строчек может быть гораздо больше, чтобы руками каждый раз формулу не изменять.
Попытался сделать следующим образом, но не помогло
Код
=СУММПРОИЗВ((A:A=A2)*C:C*D:D)/СУММЕСЛИ(A:A;A2;C:C)
Изменено: Olegas - 08.01.2026 23:02:59
Поиск средней цены по условию, Поиск средней цены по условию
 
Великолепно, Маэстро!) Очень Вам признателен!
Я думал, что это - на грани невозможного)
Спасибо огромнейшее!
Поиск средней цены по условию, Поиск средней цены по условию
 
Добрый день!
Прошу вашей помощи в создании формулы массива.
Эксель 2007
Файл для примера прикладываю.
На разных складах разное количество товара по разным закупочным ценам.
Мне нужно найти среднюю цену за штуку, учитывая количества с разными ценами.
В последнем столбце, выделенным зеленым, я отразил правильные значения.
Колонки, выделенные розовым - не нужны, я их отразил вам для примера.

То есть, берем один товар, чтобы получить нужное значение: нужно перемножить сначала количества и цену по каждому складу, суммировать полученные цены и разделить на общее количество товара.

Заранее благодарен за помощь!
Изменено: Olegas - 07.01.2026 20:42:27
Замена значений в макросе, Замена значений в макросе
 
Есть еще вот такие замены, но они не подходят для #Н/Д (так как #Н/Д - это ошибка), но подходят для других примеров, к примеру, можно заменить #НД на НИЧЕГО:
Код
Range("J:M").Replace "#НД", "", 2
Код
Range("J:M").Replace What:="#НД", Replacement:="", LookAt:=2
Код
If Range("J:M").Replace("#НД", "", 2) Then
End If
Код
Dim a
a = Range("J:M").Replace("#НД", "", 2)
Плохо, что в интернете очень долго и сложно найти подходящие примеры.
Был бы готовый банк примеров отрывков из макроса.
Изменено: Olegas - 08.01.2026 22:57:50
Замена значений в макросе, Замена значений в макросе
 
Нашел)) и скорректировал. Может, кому пригодится
Код
Sub Макрос4()
Dim errRn As Range
    For Each ccell In Range("J:M")
        If IsError(ccell) Then
            If errRn Is Nothing Then
                Set errRn = ccell
            Else
                Set errRn = Union(errRn, ccell)
            End If
        End If
    Next ccell
    If Not errRn Is Nothing Then
        'Значение для замены
        errRn.Value = ""
    End If
End Sub
Изменено: Olegas - 08.01.2026 22:58:35
Замена значений в макросе, Замена значений в макросе
 
Добрый день, друзья!
Эксель 2007
Подскажите, пожалуйста, код макроса, который бы в столбцах J:M заменил значение ячейки #Н/Д (ошибка ранее заменена значениями) на ничего.
Ранее я применял формулу...
Код
"=IFERROR(VLOOKUP(RC[-9],Лист1!C[-11]:C[-5],7,0),"""")"
...но последующая формула не видит пустую ячейку (как будто в пустой ячейке не пусто), поэтому, думаю, проще будет с режимом замены.
Спасибо!)
Изменено: Olegas - 08.01.2026 22:58:59
Применение InputBox в макросе с применением формулы, Применение InputBox в макросе с применением формулы
 
Я нашел немного другой способ:
   
Код
Range("N10").Select
    With ActiveSheet.UsedRange
    lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    End With
    Dim userInput As Double
    userInput = Application.InputBox("Введите число:", Type:=1)
    Range("N7").Value = userInput
    Range("N10:N" & lLastRow).FormulaR1C1 = "=IF(RC[-1]>0,RC[-1]/R7C14,RC[-8])"
    Range("N10").Select

Я поместил введенное значение в N7, а в формуле сделал ссылку на эту ячейку.
Изменено: Olegas - 08.01.2026 23:05:55
Применение InputBox в макросе с применением формулы, Применение InputBox в макросе с применением формулы
 
Лишние кавычки убрал, прописал так:
Код
Range("N10:N" & lLastRow).FormulaR1C1 = "=IF(RC[-1]>0,RC[-1]/" & userInput & ",RC[-8])"
Он эту строчку желтым выделяет, ошибка где-то
Изменено: Olegas - 08.01.2026 23:05:41
Применение InputBox в макросе с применением формулы, Применение InputBox в макросе с применением формулы
 
Цитата
написал:
Range("N10:N" & lLastRow).FormulaR1C1 = "=IF(RC[-1]>0,RC[-1]/" & "userInput &",RC[-8])"
Не работает
" & "userInput &"
ошибка где-то
Применение InputBox в макросе с применением формулы, Применение InputBox в макросе с применением формулы
 
Сделал вот так:    
Код
Range("N10").Select
    With ActiveSheet.UsedRange
    lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    End With
    Dim userInput As Variant
    userInput = Application.InputBox("Введите число:", Type:=1)
    Range("N10:N" & lLastRow).FormulaR1C1 = "=IF(RC[-1]>0,RC[-1]/userInput,RC[-8])"
    Range("N10").Select

Автозаполнение проходит успешно, формула применяется соответственно, но в ячейках #ИМЯ?
Код
=ЕСЛИ(M10>0;M10/userInput;F10
0,9 не ввелось
Изменено: Olegas - 08.01.2026 23:05:18
Применение InputBox в макросе с применением формулы, Применение InputBox в макросе с применением формулы
 
Доброго всем времени суток!
Ребята, нужна подсказка:
Эксель 2007
Есть формула
Код
=ЕСЛИ(M10>0;M10/0,9;F10)
, где 0,9 - величина меняющаяся, которая бы регулировалась через InputBox
Она же в макросе выглядит так:
Код
"=IF(RC[-1]>0,RC[-1]/0.9,RC[-8])"
Когда макрос доходит до этой формулы, то на экран выводится InputBox для ввода величины 0,9 или какого-либо другого значения, а после ввода величины применялась формула до последней ячейки.
Подскажите, пожалуйста, кусок кода макроса, если вам не сложно...
Спасибо!
Изменено: Olegas - 08.01.2026 23:04:43
Автозаполнение данных в макросе с применением массивной формулы, Автозаполнение данных в макросе с применением массивной формулы
 
Прошу прощения...Вы всё точно мне подсказали, формула пригодилась, всё сработало. Спасибо Вам огромное, очень признателен!
Но пока я ждал ответа - сам нашел ответы на свои вновь возникшие вопросы) поэтому и удалил вопрос, подумал, что, возможно, еще не успели прочитать.
Я над этими формулами сегодня часов 5 сижу гоняю макросы)
Всё получилось.
Приложенная мною таблица - это одна часть большого процесса.
Назначенная мной переменная lLastRow вконтексте Dim lLastRow As Long, в этом случае, работала с 42 строками, а далее, по макросу, мне нужно было работать с бОльшим количеством строк, и, Dim lLastRow As Long применить не получалось. Потом до меня дошло, что lLastRow - это название переменной. И я решил ввести новую переменную lLastKey для работы с бОльшим количеством строк. Аналогичный код макроса, но уже с переменной lLastKey, позволили мне автоматически заполнить другой большой список.
Может быть, с этим столкнётся другой новичок, такой же, как я, и эта информация для него будет полезна...
Автозаполнение данных в макросе с применением массивной формулы, Автозаполнение данных в макросе с применением массивной формулы
 
Получилось. Спасибо большое!)
Изменено: Olegas - 06.01.2026 20:58:34
Автозаполнение данных в макросе с применением массивной формулы, Автозаполнение данных в макросе с применением массивной формулы
 
Добрый день!
Эксель 2007.
В колонке E2 применил массивную формулу
Код
=МИН(ЕСЛИ($A$2:$A$42=A2;$D$2:$D$42))
. Но через макрос она не работает
Автозаполнение, при этом, проходит успешно. A2 (она же - RC[-4]) не меняется.
Подскажите, пожалуйста, в чем может быть ошибка.
Заранее благодарен за помощь!
Код
Sub Макрос10()
    Range("E2").Select
    Dim lLastRow As Long
    With ActiveSheet.UsedRange
    lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    Range("E2:E" & lLastRow).FormulaArray = "=MIN(IF(R2C1:R42C1=RC[-4],R2C4:R42C4))"
    Application.Calculation = xlAutomatic
    End With
End Sub
Изменено: Olegas - 08.01.2026 23:04:03
Разделение текста формулами, Разделение текста формулами
 
Отлично, всё сработало!) Спасибо огромное!!!))
Разделение текста формулами, Разделение текста формулами
 
Версия 2007 года
Разделение текста формулами, Разделение текста формулами
 
Прикладываю))
Я просто подумал, что это не обязательно)
Разделение текста формулами, Разделение текста формулами
 
Добрый день, товарищи-профессионалы Экселя! Нужна ваша помощь)
Подскажите, пожалуйста:
Есть 2 текста:
В ячейке A2: МС1568 Винт с шайбой
В ячейке A3: МС2768
Изобрёл 2 формулы в двух колонках B2 и C2 соответственно:
Код
=ЛЕВСИМВ(A2;ПОИСК(" ";A2)-1)
эта формула оставляет артикул, удаляя наименование
Код
=ПРАВСИМВ(A2;ДЛСТР(A2)-ПОИСК(" ";A2;ПОИСК(" ";A2)))
эта формула оставляет наименование, удаляя артикул
Но, при наличии артикула без наименования (как в ячейке A3), формула не помогает - выводится #ЗНАЧ!
Тут, наверное, нужно еще вначале условие ЕСЛИ применить. Но как применить - я не знаю.
Нужны ваши советы, ребята)
Изменено: Olegas - 08.01.2026 23:07:01
Страницы: 1 2 След.
Наверх