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

Вход

Регистрация

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

 

= Мир MS Excel/Вставка текстового значения в ячейку по условию - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставка текстового значения в ячейку по условию (Макросы/Sub)
Вставка текстового значения в ячейку по условию
joni73 Дата: Понедельник, 10.07.2017, 19:09 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Уважаемые профи, прошу помочь в написании макроса. Необходимо подставить текстовое значение в ячейку, при условии:
если число в диапазоне от 0 до 249, то пусто
если с 250 по 499 то ТО1
если с 250 по 500 то ТО1, ТО2
если с 251 по 749 то ТО2
если с 500 по 750 то ТО2, ТО1
если с 501 по 999 то ТО1
если с 501 по 1000 то ТО1, ТО3
К сообщению приложен файл: 2487865.xlsx (14.9 Kb)


Сообщение отредактировал joni73 - Понедельник, 10.07.2017, 19:16
 
Ответить
СообщениеУважаемые профи, прошу помочь в написании макроса. Необходимо подставить текстовое значение в ячейку, при условии:
если число в диапазоне от 0 до 249, то пусто
если с 250 по 499 то ТО1
если с 250 по 500 то ТО1, ТО2
если с 251 по 749 то ТО2
если с 500 по 750 то ТО2, ТО1
если с 501 по 999 то ТО1
если с 501 по 1000 то ТО1, ТО3

Автор - joni73
Дата добавления - 10.07.2017 в 19:09
Gustav Дата: Понедельник, 10.07.2017, 19:30 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2697
Репутация: 1123 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
если с 250 по 499 то ТО1
если с 250 по 500 то ТО1, ТО2

мдя... Вы сами-то свои диапазоны пристально разглядывали? Для 250 - 499 что писать-то? "TO1" или "ТО1, ТО2" ?


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
если с 250 по 499 то ТО1
если с 250 по 500 то ТО1, ТО2

мдя... Вы сами-то свои диапазоны пристально разглядывали? Для 250 - 499 что писать-то? "TO1" или "ТО1, ТО2" ?

Автор - Gustav
Дата добавления - 10.07.2017 в 19:30
joni73 Дата: Понедельник, 10.07.2017, 20:37 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Gustav, 250-499 ТО1
на 250 проводится ТО1
на 500 проводится ТО2
на 750 проводится опять ТО1
на 1000 проводится ТО3
на 1250 ТО1
на 1500 ТО2
на 1750 ТО1
на 2000 ТО3
на 2250 ТО1
на 2500 ТО2
на 2750 ТО1
на 3000 ТО4
далее цикл повторяется
3250 ТО1 и т.д.
но если в одном месяце нарабатывает и 250 и 500 то объединяется ТО1, ТО2
500 и 750 ТО2, ТО1
750 и 1000 ТО1, ТО3
как то так
 
Ответить
СообщениеGustav, 250-499 ТО1
на 250 проводится ТО1
на 500 проводится ТО2
на 750 проводится опять ТО1
на 1000 проводится ТО3
на 1250 ТО1
на 1500 ТО2
на 1750 ТО1
на 2000 ТО3
на 2250 ТО1
на 2500 ТО2
на 2750 ТО1
на 3000 ТО4
далее цикл повторяется
3250 ТО1 и т.д.
но если в одном месяце нарабатывает и 250 и 500 то объединяется ТО1, ТО2
500 и 750 ТО2, ТО1
750 и 1000 ТО1, ТО3
как то так

Автор - joni73
Дата добавления - 10.07.2017 в 20:37
_Boroda_ Дата: Понедельник, 10.07.2017, 20:44 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Чем этот вопрос отличается от вашего предыдущего? В котором вы, кстати, так и не отписались


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЧем этот вопрос отличается от вашего предыдущего? В котором вы, кстати, так и не отписались

Автор - _Boroda_
Дата добавления - 10.07.2017 в 20:44
joni73 Дата: Понедельник, 10.07.2017, 20:58 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, а что можно было отписать, если мне предложили самому все решить..... За бестактность я извинился. Если возможно написать макрос под эти условия, то очень прошу помочь.
 
Ответить
Сообщение_Boroda_, а что можно было отписать, если мне предложили самому все решить..... За бестактность я извинился. Если возможно написать макрос под эти условия, то очень прошу помочь.

Автор - joni73
Дата добавления - 10.07.2017 в 20:58
Pelena Дата: Понедельник, 10.07.2017, 21:23 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19162
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
joni73, чем не подошла формула из этой темы?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщениеjoni73, чем не подошла формула из этой темы?

Автор - Pelena
Дата добавления - 10.07.2017 в 21:23
joni73 Дата: Вторник, 11.07.2017, 01:57 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, да действительно, не отписался. Пробовал формулу понять доработать, но во первых очень длинная формула, во вторых все так и не правильно рассчитывает. В общем я уже в той теме отписался.
 
Ответить
Сообщение_Boroda_, да действительно, не отписался. Пробовал формулу понять доработать, но во первых очень длинная формула, во вторых все так и не правильно рассчитывает. В общем я уже в той теме отписался.

Автор - joni73
Дата добавления - 11.07.2017 в 01:57
Gustav Дата: Вторник, 11.07.2017, 08:45 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2697
Репутация: 1123 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Запилил пользовательскую функцию. Параметры - часы ОТ и часы ДО, т.е. наработки в конце предыдущего месяца и в конце текущего. Вроде, работает. Даже выявились некоторые описочки в файле ТС yes
[vba]
Код
Function STRTO(hrsFrom, hrsTo) As String
    Dim iFrom As Long
    Dim iTo As Long
    Dim i As Long
    Dim toType As String
    Dim allTypes As String
    
    Const dSmall As Double = 0.000001
    Const iDelta As Long = 250
    
    iFrom = WorksheetFunction.Ceiling(hrsFrom + dSmall, iDelta)
    iTo = WorksheetFunction.Floor(hrsTo, iDelta)
    
    For i = iFrom To iTo Step iDelta
        If i Mod 3000 = 0 Then
            toType = "ТО4"
        ElseIf i Mod 1000 = 0 Then
            toType = "ТО3"
        ElseIf i Mod 500 = 0 Then
            toType = "ТО2"
        ElseIf i Mod 250 = 0 Then
            toType = "ТО1"
        End If
        allTypes = allTypes & ", " & toType
    Next i
    
    STRTO = Mid(allTypes, 3)
End Function
[/vba]
К сообщению приложен файл: TO250.xlsm (23.0 Kb)


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеЗапилил пользовательскую функцию. Параметры - часы ОТ и часы ДО, т.е. наработки в конце предыдущего месяца и в конце текущего. Вроде, работает. Даже выявились некоторые описочки в файле ТС yes
[vba]
Код
Function STRTO(hrsFrom, hrsTo) As String
    Dim iFrom As Long
    Dim iTo As Long
    Dim i As Long
    Dim toType As String
    Dim allTypes As String
    
    Const dSmall As Double = 0.000001
    Const iDelta As Long = 250
    
    iFrom = WorksheetFunction.Ceiling(hrsFrom + dSmall, iDelta)
    iTo = WorksheetFunction.Floor(hrsTo, iDelta)
    
    For i = iFrom To iTo Step iDelta
        If i Mod 3000 = 0 Then
            toType = "ТО4"
        ElseIf i Mod 1000 = 0 Then
            toType = "ТО3"
        ElseIf i Mod 500 = 0 Then
            toType = "ТО2"
        ElseIf i Mod 250 = 0 Then
            toType = "ТО1"
        End If
        allTypes = allTypes & ", " & toType
    Next i
    
    STRTO = Mid(allTypes, 3)
End Function
[/vba]

Автор - Gustav
Дата добавления - 11.07.2017 в 08:45
joni73 Дата: Вторник, 11.07.2017, 18:13 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Gustav, Все отлично работает, огромная Вам благодарность. Просто профи, если одним словом.
 
Ответить
СообщениеGustav, Все отлично работает, огромная Вам благодарность. Просто профи, если одним словом.

Автор - joni73
Дата добавления - 11.07.2017 в 18:13
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставка текстового значения в ячейку по условию (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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