Уважаемые профи, прошу помочь в написании макроса. Необходимо подставить текстовое значение в ячейку, при условии: если число в диапазоне от 0 до 249, то пусто если с 250 по 499 то ТО1 если с 250 по 500 то ТО1, ТО2 если с 251 по 749 то ТО2 если с 500 по 750 то ТО2, ТО1 если с 501 по 999 то ТО1 если с 501 по 1000 то ТО1, ТО3
Уважаемые профи, прошу помочь в написании макроса. Необходимо подставить текстовое значение в ячейку, при условии: если число в диапазоне от 0 до 249, то пусто если с 250 по 499 то ТО1 если с 250 по 500 то ТО1, ТО2 если с 251 по 749 то ТО2 если с 500 по 750 то ТО2, ТО1 если с 501 по 999 то ТО1 если с 501 по 1000 то ТО1, ТО3joni73
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
_Boroda_, а что можно было отписать, если мне предложили самому все решить..... За бестактность я извинился. Если возможно написать макрос под эти условия, то очень прошу помочь.
_Boroda_, а что можно было отписать, если мне предложили самому все решить..... За бестактность я извинился. Если возможно написать макрос под эти условия, то очень прошу помочь.joni73
_Boroda_, да действительно, не отписался. Пробовал формулу понять доработать, но во первых очень длинная формула, во вторых все так и не правильно рассчитывает. В общем я уже в той теме отписался.
_Boroda_, да действительно, не отписался. Пробовал формулу понять доработать, но во первых очень длинная формула, во вторых все так и не правильно рассчитывает. В общем я уже в той теме отписался.joni73
Запилил пользовательскую функцию. Параметры - часы ОТ и часы ДО, т.е. наработки в конце предыдущего месяца и в конце текущего. Вроде, работает. Даже выявились некоторые описочки в файле ТС [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]
Запилил пользовательскую функцию. Параметры - часы ОТ и часы ДО, т.е. наработки в конце предыдущего месяца и в конце текущего. Вроде, работает. Даже выявились некоторые описочки в файле ТС [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