Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 15.11.2007, 14:40   #1
Romuald
Форумчанин
 
Регистрация: 12.11.2007
Сообщений: 209
По умолчанию Сокращение после запятой

Добрый день!
Подскажите, пожалуйста : возникла необходимость в такой фишке
Колонка с цифрами и ее надо во как сделать --- поставить критерий
если после запятой к примеру цифра 3 то целое число плюс 1, если меньше 3 то равно целому, но так как иногда надо менять критерий
и после запятой может быть любая цифирь и иногда такая же ...... по второй цифре после запятой
Помогите с макросом:
1 Выбираем колонку или диапазон
2 Врубаем макрос и задаем критерий а) по какой цифре после запятой
б) после какой цифры идет +1
заранее спасибо
Romuald вне форума
Старый 15.11.2007, 22:46   #2
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

Точно не знаю, посмотрите

Код:
Sub Test()
Dim iRange, iCell As Range
Dim iNumber, PlusOneNumber As Long

Set iRange = Selection.Cells
    If iRange.Cells.Count = 1 Then
        MsgBox "Выделите диапазон ячеек!"
        Exit Sub
    End If
    'по какой цифре после запятой
    iNumber = Application.InputBox("По какой цифре после запятой?", "Вопросик", 2)
    If iNumber = 0 Then
        MsgBox "Вы не ввели данные!", vbExclamation, "Ошибка"
        Exit Sub
    End If
    'после какой цифры идет +1
    PlusOneNumber = Application.InputBox("После какой цифры идет +1?", "Вопросик", 3)
    If PlusOneNumber = 0 Then
        MsgBox "Вы не ввели данные!", vbExclamation, "Ошибка"
        Exit Sub
    End If
    
    For Each iCell In iRange
        If IsNumeric(iCell) Then
            If InStr(1, iCell, ",") > 0 Then
                If Mid(iCell, iNumber + 1, 1) = PlusOneNumber Then iCell = iCell + 1
                If Mid(iCell, iNumber + 1, 1) < PlusOneNumber Then iCell = WorksheetFunction.Round(iCell, 0)
            End If
        End If
    Next
    MsgBox "Массив данных обработан!", vbInformation, "Конец"
End Sub
Pavel55 вне форума
Старый 16.11.2007, 10:25   #3
Romuald
Форумчанин
 
Регистрация: 12.11.2007
Сообщений: 209
По умолчанию

Поставил, все нормально,спрашивает критерии , но действий никаких
Romuald вне форума
Старый 16.11.2007, 10:33   #4
Romuald
Форумчанин
 
Регистрация: 12.11.2007
Сообщений: 209
По умолчанию

Вот сам файл
Вложения
Тип файла: zip Test posle zpt.zip (9.2 Кб, 19 просмотров)
Romuald вне форума
Старый 16.11.2007, 12:23   #5
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

хм, ну, я не знаю... Я выделяю ячейки B1:B10 в вашем файле, запускаю макрос, нажимаю 2 раза "ОК" и он мне эти ячейки обрабатывает. Вот что получается
1,00
1,00
1,00
1,00
2,30
2,35
1,40
1,45
1,50
1,55

P.S. желательно, чтобы все числа былы сохранены в числофот формате, а не как текст (т.е. чтобы не было зелёненьких треугольничков у ячейки). Т.к. в коде обрабатываются ячейки с числом.

P.S.S. Я неправильно объявил переменные в этом макросе, поправьте там
Код:
Dim iRange As Range, iCell As Range
Dim iNumber As Long, PlusOneNumber As Long

Последний раз редактировалось Pavel55; 16.11.2007 в 12:25.
Pavel55 вне форума
Старый 16.11.2007, 13:27   #6
Romuald
Форумчанин
 
Регистрация: 12.11.2007
Сообщений: 209
По умолчанию

Пробую , но......
Вот какие данные хотелось бы увидеть
Вложения
Тип файла: zip Test posle zpt 1.zip (8.9 Кб, 15 просмотров)
Romuald вне форума
Старый 16.11.2007, 13:50   #7
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

надо подумать) Может нам Pashulka поможет ? )

Последний раз редактировалось Pavel55; 16.11.2007 в 15:00.
Pavel55 вне форума
Старый 16.11.2007, 18:26   #8
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

Посмотрите

Код:
Sub Test()
Dim iRange As Range, iCell As Range
Dim iNumber  As Long, PlusOneNumber As Long

Set iRange = Selection.Cells
    If iRange.Cells.Count = 1 Then
        MsgBox "Videlite diapazon jacheek!"
        Exit Sub
    End If
    'Po kakoi cifre posle zapjatoi
    iNumber = Application.InputBox("Po kakoi cifre posle zapjatoi?", "Voprosik", 2)
    If iNumber = 0 Then
        MsgBox "Vi ne vveli dannie!", vbExclamation, "Oshibka"
        Exit Sub
    End If
    'posle kakoi cifri idet+1
    PlusOneNumber = Application.InputBox("Posle kakoi cifri idet +1?", "Voprosik", 3)
    If PlusOneNumber = 0 Then
        MsgBox "Vi ne vveli dannie!", vbExclamation, "Oshibka"
        Exit Sub
    End If
    For Each iCell In iRange
        If IsNumeric(iCell) Then
            If InStr(1, iCell, ",") > 0 Then
                '1
                If iNumber = 1 Then
                    If Mid(iCell, InStr(1, iCell, ",") + iNumber, 1) < PlusOneNumber Then iCell = WorksheetFunction.RoundDown(iCell, 0)
                    If Mid(iCell, InStr(1, iCell, ",") + iNumber, 1) = PlusOneNumber Then iCell = WorksheetFunction.RoundUp(iCell, 0)
                '2
                ElseIf iNumber = 2 Then
                    iCell = WorksheetFunction.RoundUp(iCell, 1)
                End If
            End If
        End If
    Next
    MsgBox "Massiv dannih obrabotan!", vbInformation, "VSJO!!!"
End Sub
Pavel55 вне форума
Старый 20.11.2007, 09:58   #9
Romuald
Форумчанин
 
Регистрация: 12.11.2007
Сообщений: 209
По умолчанию

Не ..... не идет !!!!!!!
Romuald вне форума
Старый 20.11.2007, 09:58   #10
Romuald
Форумчанин
 
Регистрация: 12.11.2007
Сообщений: 209
По умолчанию

Не ..... не идет !!!!!!!
Romuald вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление не нужных знаков после запятой. Alar Общие вопросы Delphi 4 31.05.2012 19:59
как отрегулировать кол-во знаков после запятой, при выведении числа(delphi) photozaz Общие вопросы Delphi 11 10.02.2011 21:20
кол-во знаков после запятой в TEdit Petrucci Общие вопросы Delphi 9 04.07.2008 13:15
Количество цифр после запятой LIEN БД в Delphi 7 03.07.2008 22:12
Ограничение знаков после запятой,StringGrid Gorin Компоненты Delphi 9 20.09.2007 16:10