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

Страницы: 1
Как отфильтровать список только по тем номерам, которые содержат 3 или меньше знака в номере?
 
Цитата
Дмитрий Щербаков написал:
=НЕ(ЕОШ(ПОИСК(" ??? ";" "&B5&" ")))
спасибо я даже не знал что так можно делать

Цитата
alexleoix написал:
Набросал вариант решения через PQ
вам тоже спасибо, только я так и не понял как это работает, буду изучать
еще удобненький что показывает сколько номеров

спасибо всем я бы год разбирал список с 30000 товарами
Как отфильтровать список только по тем номерам, которые содержат 3 или меньше знака в номере?
 
Цитата
Сергей написал: а это ваще в ступор вгоняет
извиняюсь что не могу толково объяснить.
номер может содержать и цифры и буквы и всё вместе, шрифт не причем меньше это количество знаков в номере

например здесь 64156 => 5 знаков
здесь 8GH => 3 знака
так вот мне нужно найти ячейки которые содержат номера с 3 или 2 или 1 знаком
все номера разделены четко одним пробелом
Как отфильтровать список только по тем номерам, которые содержат 3 или меньше знака в номере?
 
не очень понятно, мне же нужно найти только те ячейки в которых есть номера у которых знаков меньше 3, не количество номеров, а чтоб в содержании этих номеров было знаков от 3 и менее
Как отфильтровать список только по тем номерам, которые содержат 3 или меньше знака в номере?
 
Цитата
Юрий М написал:
И предложите новое название темы
я не знаю как это действо обозвать. может "как проще отфильтровать, по количеству символов в тексте, в 1 номере, в ячейке" поменяйте на эту тему если можно

пример прилагаю
Изменено: virtpetr - 04.04.2018 14:02:47
Как отфильтровать список только по тем номерам, которые содержат 3 или меньше знака в номере?
 
есть список товаров с номерами в одной ячеки через пробел
подскажите как фильтром отфильтровать список по этим номерам только те которые содержат только 3 или меньше знака в номере

вот номера в ячейке
002554100000 8GH 431 13336MDC1 64156 06706 9939027SX 9939027SX N460 1   431
значит фильтр должен найти эту строку потому что здесь есть 3-х значные номера или меньше 8GH

я пробовал Условия с подстановочными знакам, но чтото не получается. может разобрать эти номера в соседней ячейке или сделать условие.
подскажите как проще быть?
как правильно записать дату со временем из vba в ячейку чтоб формат был датой, как правильно записать дату со временем из vba в ячейку чтоб формат был датой
 
Цитата
Ігор Гончаренко написал:
.Cells(iLastRow, 5) = SecondD
спасибо, разобрался у меня были две переменные одна Dim SecondD As Date
просто записалась норм
а вторая Dim FirstD без назначении даты
вот на нее я и грешил и так и сяк крутил, я оказалось просто надо обозначить ее
и еще такой Format(SecondD, "d.mm.yy h:mm") метод я применял чтобы избавиться от секунд, а оказалось нужно в просто правильно заносить дату в уже в отформатированную ячейку без секунд
как правильно записать дату со временем из vba в ячейку чтоб формат был датой, как правильно записать дату со временем из vba в ячейку чтоб формат был датой
 
вот так я записываю дату в ячейку .Cells(iLastRow, 5) = Format(SecondD, "d.mm.yy h:mm")    "31.01.18 17:26"
но она там записывается как текст и следовательно к ней не применяется нормально фильтр по дате

так делал DateValue(Format(FirstD, "d.mm.yy h:mm")) но он записывает дату в формате но время по 0:00:00

как записать со временем, может просто прибавить время к этому формату Format(Hours, "00") & ":" & Format(Minutes, "00") типа так
помогите в форме vba с подсчетом времени и умножением на стоимость
 
а нет это и так входит в условие, еще раз спасибо
помогите в форме vba с подсчетом времени и умножением на стоимость
 
Цитата
Sanja написал:
Зачем такие сложности?
спасибо, так гораздо проще
а если запишут текст, то нужно проверять на цифру?
помогите в форме vba с подсчетом времени и умножением на стоимость
 
подскажите еще не работает оператор сравнения
хочу из текстбокс проверять правильный час
Код
Dim Notime As Boolean
For i = 0 To 24
    If i = Me.TextBox9 Then
    Notime = True
    Exit For
    End If
Next i
If Notime = False Then
    MsgBox "Неправильно записан час въезда!" & "-" & Me.TextBox9 & "+" & i
    Exit Sub
End If
If i = Me.TextBox9 Then почему не сравнивается
например если в Me.TextBox9  = 22
если просто сравнить
If Me.TextBox9 = 22 Then
   MsgBox "готово"
   Exit Sub
End If
то работает
а цикле никак
может подскажите как правильно?
помогите в форме vba с подсчетом времени и умножением на стоимость
 
спасибо разделить текстбокс и добавить комбобоксы я даже не догадывался, это простейшее решение из всех
помогите в форме vba с подсчетом времени и умножением на стоимость
 
честно говоря я сам не представляю как это сделать
хотел вместо ручного редактирования времени въезда и выезда сделать выбор времени и даты, но кажется это очень сложная процедура
фаил прилагаю
Изменено: virtpetr - 21.01.2018 22:36:30
помогите в форме vba с подсчетом времени и умножением на стоимость
 
спасибо большое за подсказки, разобрался что такое время
только сделал по своему, оказывается нельзя нормально посчитать разницу в времени и получить нормальное время, только в чем-то определенном минуты например и получаю общее количество минут и записываю в формате эксель, а он сам разбирается как записать время вот так
Код
Private Sub CommandButton1_Click()
Dim iLastRow As Long
Dim iBazaSht As Worksheet
Dim FirstD As Date
Dim SecondD As Date
Dim Hours As Integer
Dim Minutes As Integer
    FirstD = Me.TextBox3
    SecondD = Me.TextBox4
    Hours = "0"
    Minutes = DateDiff("n", FirstD, SecondD) 'общее количество минут
Dim mtime As Integer
    mtime = Range("B2") 'вместо времени записанно простое число "минут"
Dim cena As Integer
    cena = Range("C2")
Dim stoimost
    stoimost = Minutes / mtime * cena 'получаем стоимость
    If Me.ComboBox1 = "" Then
        MsgBox "Выберете место", vbExclamation, "Ошибка"
        Exit Sub
    End If
    Set iBazaSht = ThisWorkbook.Sheets("Лист2")
        Protect_for_User_Non_for_VBA Sheets(iBazaSht.Name)
    With Sheets(iBazaSht.Name)
        iLastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
        .Cells(iLastRow, 1) = Me.ComboBox1
        .Cells(iLastRow, 2) = Me.TextBox1
        .Cells(iLastRow, 3) = Me.TextBox2
        .Cells(iLastRow, 4) = Me.TextBox3
        .Cells(iLastRow, 5) = Me.TextBox4
        .Cells(iLastRow, 6) = Format(Hours, "00") & ":" & Format(Minutes, "00") 'записываем в формате экселя время
        .Cells(iLastRow, 7) = stoimost
        .Cells(iLastRow, 8) = Me.TextBox7
    End With
    Me.TextBox1 = ""
    Me.TextBox2 = ""
    Me.TextBox3 = Now
    Me.TextBox4 = Now
    Me.TextBox7 = ""
    MsgBox "Информация добавлена в Лист2!", vbInformation, "Лист2"
End Sub
может еще подскажите есть возможность сделать простую выборку даты со временем вместо передачи в TextBox Now, а потом редактирование
или это очень сложная процедура?
Изменено: virtpetr - 21.01.2018 23:52:12
помогите в форме vba с подсчетом времени и умножением на стоимость
 
блин в два раза обернуть в скобки, я бы точно не догадался

подскажите а можно разделить время на время и получить простое число?
и как примерно
помогите в форме vba с подсчетом времени и умножением на стоимость
 
вобщем вот что накидал
Код
Private Sub CommandButton1_Click()
Dim iLastRow As Long
Dim iBazaSht As Worksheet
Dim MinuteCnt As Long
    MinuteCnt = Minute(Me.TextBox4) - Minute(Me.TextBox3)  'пытался так MinuteCnt = DateDiff("n", Me.TextBox4, Me.TextBox3) но тут выходит только минуты или часы с минусом
    MsgBox MinuteCnt
Dim mtime As Date
    mtime = Range("B2") 'здесь из ячейки "0:05:00" время
    MsgBox mtime
Dim cena
    cena = Range("C2") 'здесь из ячейки "25" стоимость
Dim stoimost
    stoimost = MinuteCnt / mtime * cena
    MsgBox stoimost
    If Me.ComboBox1 = "" Then
        MsgBox "Âûáåðåòå ìåñòî", vbExclamation, "Îøèáêà"
        Exit Sub
    End If
    Set iBazaSht = ThisWorkbook.Sheets("Ëèñò2") 
        Protect_for_User_Non_for_VBA Sheets(iBazaSht.Name)
    With Sheets(iBazaSht.Name)
        iLastRow = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
        .Cells(iLastRow, 1) = Me.ComboBox1
        .Cells(iLastRow, 2) = Me.TextBox1
        .Cells(iLastRow, 3) = Me.TextBox2
        .Cells(iLastRow, 4) = Me.TextBox3
        .Cells(iLastRow, 5) = Me.TextBox4
        .Cells(iLastRow, 6) = MinuteCnt
        .Cells(iLastRow, 7) = stoimost
        .Cells(iLastRow, 8) = Me.TextBox7
    End With
    Me.TextBox1 = ""
    Me.TextBox2 = ""
    Me.TextBox3 = ""
    Me.TextBox4 = ""
    Me.TextBox7 = ""
    MsgBox "Èíôîðìàöèÿ äîáàâëåíà â Ëèñò2!", vbInformation, "Ëèñò2"
End Sub
 
stoimost  - не знаю как разделить время на 5 минут и умножить на 25 рублей чтоб получить стоимость, в эксель это делается просто

Me.TextBox4 получаю макросом по нажатию на кнопку значение такое 19.01.2018 18:36:57, а Me.TextBox3 также значение такое 19.01.2018 17:26:57. их потом в форме редактируют

подскажите хотя-бы как разобраться со временем
Применить формулу ко всем заполненым ячейкам в столбце макросом
 
Бахтиёр, спасибо, я бы не догадался перебрать ячейки в цикле
немного подправил вашу версию добавил форматирование и .NumberFormat = "0"
Применить формулу ко всем заполненым ячейкам в столбце макросом
 
не судите строго, я надеялся на функцию которая сама дублирует двойное нажатие на точку в ячейке, ведь она же заложена в экселе, значит теоретически ее можно вывести в VBC
я только учусь разбираться в этом

про функцию ActiveCell.CurrentRegion я первым делом узнал, и также узнал что она не очень корректно работает

значит в макросе нужно сделать так:
Код
Set number = Intersect(ActiveCell.CurrentRegion, Columns(ActiveCell.Column))  ' получить количество строк в переменную 
Range("F2").Select
ActiveCell.FormulaR1C1 = _
        "=(RC[-1]-RC[-1]*'[ôîðìèðîâàíèå ïðàéñà.xlsm]Ëèñò1'!R2C3)*'[ôîðìèðîâàíèå ïðàéñà.xlsm]Лист1'!R1C2" ' пишу формулу в ячейку
Selection.AutoFill Destination:=Range("F2:F2"& number ) ' раскладываю эту функцию по всем ячейкам

так правильно будет
Применить формулу ко всем заполненым ячейкам в столбце макросом
 
а какой принцип посоветуете?
есть что нибудь похожее на
Цитата
virtpetr написал:
я знаю как это быстро делать руками (нажать два раза на точку в выделенной ячейке в начале этого столбца и формула применится к остальным ячейкам в этом столбце)
Применить формулу ко всем заполненым ячейкам в столбце макросом
 
подскажите как применить формулу ко всем заполненым ячейкам в столбце с помощью макроса ?

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

так вот как правильно делать такую операцию?
нужно подсчитать количество строк и как то в эту формулу запихать переменную к диапазону ячеек?
или изначально подсчитать сколько строк копируется из документа и потом добавить как то к формуле?

подскажите, а то не могу уложить в уме этот процесс
Проверка включен автофильтр или нет (макрос)
 
спасибо огромное работает
Проверка включен автофильтр или нет (макрос)
 
подскажите хочу сделать проверку макросом проверку включен автофильтр или нет и если не включен то включить

при записи макроса и включении кнопки записывается это
Код
Selection.AutoFilter

а так хотел сделать проверку
Код
Sub Ìàêðîñ1()

    Windows("âåñü ïðàéñ.xls").Activate
    If Selection.AutoFilter Then
    Selection.AutoFilter
    End If
End Sub

пробовал
Код
If ActiveSheet.FilterMode Then 

и
Код
 If Me.AutoFilterMode = False Then
а так включает(если выключен) и выключает(если включен)
If Selection.AutoFilter = False Then
   Selection.AutoFilter
   End If

и не работает
подскажите как сделать?
Изменено: virtpetr - 26.04.2017 13:17:22
Страницы: 1
Наверх