powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как определить минимальное значение?
11 сообщений из 11, страница 1 из 1
Как определить минимальное значение?
    #34216023
zdels
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите
Как с помощью VBA определить наименьшее число в ячейке
Например в "А1" есть 45 надо чтоб в "А2" выводил 4
Спасибо
...
Рейтинг: 0 / 0
Как определить минимальное значение?
    #34216144
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub test()
    For i =  1  To Len(Cells( 1 ,  1 ))
        If IsNumeric(Mid(Cells( 1 ,  1 ), i,  1 )) Then
            If Mid(Cells( 1 ,  1 ), i,  1 ) > m Then m = Mid(Cells( 1 ,  1 ), i,  1 )
        End If
    Next
    MsgBox m
End Sub
...
Рейтинг: 0 / 0
Как определить минимальное значение?
    #34216221
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub test()
    Dim m!
    m =  2147483647 
    If Cells( 1 ,  1 ) <> "" And IsNumeric(Cells( 1 ,  1 )) Then
        For i =  1  To Len(Cells( 1 ,  1 ))
            If Mid(Cells( 1 ,  1 ), i,  1 ) < m Then m = Mid(Cells( 1 ,  1 ), i,  1 )
        Next
        If m <>  2147483647  Then Cells( 1 ,  2 ) = m
    End If
End Sub
...
Рейтинг: 0 / 0
Как определить минимальное значение?
    #34216256
zdels
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vkodor во первых громадное спасибо
А во вторых если можешь объяснить поподробнее о
len
Mid
Что они делают?
...
Рейтинг: 0 / 0
Как определить минимальное значение?
    #34216260
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub test2()
    If Cells( 1 ,  1 ) >  1  And IsNumeric(Cells( 1 ,  1 )) Then
        m = Mid(Cells( 1 ,  1 ),  1 ,  1 )
        For i =  2  To Len(Cells( 1 ,  1 ))
            If Mid(Cells( 1 ,  1 ), i,  1 ) < m Then m = Mid(Cells( 1 ,  1 ), i,  1 )
        Next
        Cells( 1 ,  2 ) = m
    End If
End Sub
...
Рейтинг: 0 / 0
Как определить минимальное значение?
    #34216293
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zdelsVkodor во первых громадное спасибо
А во вторых если можешь объяснить поподробнее о
len
Mid
Что они делают?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Len(string | varname) - Возвращает длину строки string или количество байт, занимаемых переменной varname.

Пример:

Type CustomerRecord ' Определяем свою запись
ID As Integer ' Кладём это определение в модуль
Name As String * 10 
Address As String * 30
End Type

Dim Customer As CustomerRecord
Dim MyInt As Integer, MyCur As Currency
Dim MyString, MyLen

MyString = "Hello World" ' Инициализация переменной
MyLen = Len(MyInt) ' Возвратит 2.(кол-во байт, занимаемых переменной)
MyLen = Len(Customer) ' Возвратит 42.
MyLen = Len(MyString) ' Возвратит 11. (длину строки)
MyLen = Len(MyCur) ' Возвратит 8.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Mid(stringvar, start[, length]) = string - заменяет символы в строке stringvar начиная с позиции start символами, содержащимися в строке string.

Пример:

Dim MyString
MyString = "The dog jumps" ' Инициализируем строку
Mid(MyString, 5, 3) = "fox" ' MyString = "The fox jumps".
Mid(MyString, 5) = "cow" ' MyString = "The cow jumps".
Mid(MyString, 5) = "cow jumped over" ' MyString = "The cow jumpe".
Mid(MyString, 5, 3) = "duck" ' MyString = "The duc jumpe".

источник vb_tutor_rus.chm
vb_tutor_rus.chm
...
Рейтинг: 0 / 0
Как определить минимальное значение?
    #34223206
zdels
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как я могу узнать следуещее мин значение?
...
Рейтинг: 0 / 0
Как определить минимальное значение?
    #34223351
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub test2()
Dim m!, m2!
    If Cells( 1 ,  1 ) >  2  And IsNumeric(Cells( 1 ,  1 )) Then
        m = Application.Min(Mid(Cells( 1 ,  1 ),  1 ,  1 ), Mid(Cells( 1 ,  1 ),  2 ,  1 ))
        m2 = Application.Max(Mid(Cells( 1 ,  1 ),  1 ,  1 ), Mid(Cells( 1 ,  1 ),  2 ,  1 ))
        
        For i =  3  To Len(Cells( 1 ,  1 ))
            If Val(Mid(Cells( 1 ,  1 ), i,  1 )) < m Then
                m2 = m
                m = Mid(Cells( 1 ,  1 ), i,  1 )
            ElseIf Val(Mid(Cells( 1 ,  1 ), i,  1 )) > m And Val(Mid(Cells( 1 ,  1 ), i,  1 )) < m2 Then
                m2 = Val(Mid(Cells( 1 ,  1 ), i,  1 ))
            End If
        Next
        Cells( 1 ,  2 ) = m
        Cells( 1 ,  3 ) = m2
    End If
End Sub
...
Рейтинг: 0 / 0
Как определить минимальное значение?
    #34223432
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub test3()
    If Cells( 1 ,  1 ) >  2  And IsNumeric(Cells( 1 ,  1 )) Then
        Application.DisplayAlerts = False
        Set sh1 = ActiveSheet
        Set sh = ThisWorkbook.Worksheets.Add
        sh.Cells(i +  1 ,  1 ) = "fild"
        For i =  1  To Len(sh1.Cells( 1 ,  1 ))
            sh.Cells(i +  1 ,  1 ) = Mid(sh1.Cells( 1 ,  1 ), i,  1 )
        Next
        sh.Cells( 1 ,  1 ).CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
        sh.Cells( 1 ,  1 ).CurrentRegion.Sort Key1:=sh.Cells( 1 ,  1 ), Order1:=xlAscending, Header:=xlNo, _
            OrderCustom:= 1 , MatchCase:=False, Orientation:=xlTopToBottom
        sh1.Cells( 1 ,  2 ) = sh.Cells( 1 ,  1 )
        sh1.Cells( 1 ,  3 ) = sh.Cells( 2 ,  1 )
        ThisWorkbook.Worksheets(sh.Name).Delete
        Application.DisplayAlerts = True
    End If
End Sub
...
Рейтинг: 0 / 0
Как определить минимальное значение?
    #34225181
zdels
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkodor как всегда спасибо за помощь
я тут чуть чуть добавил и вопрос такой: как можно узнать сумму циклически в не зависимости от длины вводимого значения?

Private Sub CommandButton2_Click()
'Суммирует все цифры значения
If Cells(5, 11) > 2 And IsNumeric(Cells(5, 11)) Then
Application.DisplayAlerts = False
Set page3 = ActiveSheet
Set Sh = ThisWorkbook.Worksheets.add
Sh.Cells(i + 1, 1) = ""
For i = 1 To Len(page3.Cells(5, 11))
Sh.Cells(i + 1, 1) = Mid(Sheets("page3").Cells(5, 11), i, 1)
Next
Sh.Cells(1, 1).CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
Sh.Cells(1, 1).CurrentRegion.Sort Key1:=Sh.Cells(1, 1), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Sheets("page3").Cells(8, 7) = Sh.Cells(1, 1) + Sh.Cells(2, 1) + Sh.Cells(3, 1) + Sh.Cells(4, 1) + Sh.Cells(5, 1) + Sh.Cells(6, 1) + Sh.Cells(7, 1) + Sh.Cells(8, 1) + Sh.Cells(9, 1)
ThisWorkbook.Worksheets(Sh.Name).Delete
Application.DisplayAlerts = True
End If
End Sub
...
Рейтинг: 0 / 0
Как определить минимальное значение?
    #34225688
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zdelsvkodor как всегда спасибо за помощь
я тут чуть чуть добавил и вопрос такой: как можно узнать сумму циклически в не зависимости от длины вводимого значения?

Private Sub CommandButton2_Click()
'Суммирует все цифры значения
If Cells(5, 11) > 2 And IsNumeric(Cells(5, 11)) Then
Application.DisplayAlerts = False
Set page3 = ActiveSheet
Set Sh = ThisWorkbook.Worksheets.add
Sh.Cells(i + 1, 1) = ""
For i = 1 To Len(page3.Cells(5, 11))
Sh.Cells(i + 1, 1) = Mid(Sheets("page3").Cells(5, 11), i, 1)
Next
Sh.Cells(1, 1).CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
Sh.Cells(1, 1).CurrentRegion.Sort Key1:=Sh.Cells(1, 1), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Sheets("page3").Cells(8, 7) = Sh.Cells(1, 1) + Sh.Cells(2, 1) + Sh.Cells(3, 1) + Sh.Cells(4, 1) + Sh.Cells(5, 1) + Sh.Cells(6, 1) + Sh.Cells(7, 1) + Sh.Cells(8, 1) + Sh.Cells(9, 1)
ThisWorkbook.Worksheets(Sh.Name).Delete
Application.DisplayAlerts = True
End If
End Sub
во первых: пользуйся кнопкой SRC
Код: plaintext
1.
Рекомендуется: 
Для повышения удобочитаемости сообщений - пользоваться специальными кодами для выделения слов (b, u, i, color) (но не злоупотреблять ими) и тегом форматирования исходных кодов src.
- это цитата из правил форума
во вторых:
строка
Код: plaintext
Sh.Cells(i +  1 ,  1 ) = ""
она ошибочна
должно быть так
Код: plaintext
sh.Cells( 1 ,  1 ) = "fild"
в первую строку вставляется любое текстовое значение (т.к. при установки расширенного фильтра нужно название столбца)
в третьих: непонятно почему ты в одном месте ссылаешься на лист через созданную обьектную переменную
Код: plaintext
page3.Cells( 5 ,  11 )
а вдругом по имени листа
Код: plaintext
Sheets("page3").Cells( 8 ,  7 )
ну да можно так и так, только, как то не красиво это

а сумму посчитать просто
если нужна полная сумма, то перед установкой фильтра т.е. перед
Код: plaintext
Sh.Cells( 1 ,  1 ).CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
сделай так
Код: plaintext
page3.Cells( 8 ,  7 ) = Application.Sum(sh.Cells( 1 ,  1 ).CurrentRegion)
а если нужна сумма только уникальных значений, то после сортировки т.е. после
Код: plaintext
1.
sh.Cells( 1 ,  1 ).CurrentRegion.Sort Key1:=sh.Cells( 1 ,  1 ), Order1:=xlAscending, Header:=xlNo, _
            OrderCustom:= 1 , MatchCase:=False, Orientation:=xlTopToBottom
воспользуйся промежуточными итогами
Код: plaintext
page3.Cells( 8 ,  7 ) = Application.Subtotal( 9 , sh.Cells( 1 ,  1 ).CurrentRegion)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как определить минимальное значение?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]