Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 2
Регистрация: 01.06.2012
Сообщений: 139
1

Форматирование множества чисел по образцу

19.05.2014, 17:25. Показов 1735. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем здрасте)))
Такая проблема, замучился форматировать числа в Excel, можно ли сделать так, чтоб это было автоматически?

Имеется таблица, в которой первая строчка имеет вид: <0,01 <0,1 <0.025 <0,5 <20 и т.д.
А под этой строчкой цифры, которые должны по разрядности (кол-во чисел после запятой) совпадать с этой первой строчкой. При чем цифры эти могут быть как такие: <0,01, так и такие: 0,05.
Более наглядно в файле во вложении. И чтоб прога работала только с выделенной областью: with selection )))))
Вложения
Тип файла: xls ДЛЯ ФОРУМА (DL).xls (17.5 Кб, 3 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2014, 17:25
Ответы с готовыми решениями:

форматирование нескольких html файлов по образцу
Всем привет, такой вопрос, есть куча сохраненных на диск html страничек. Все страницы имеют...

Множества.Из множества целых чисел получить множество чисел, являющихся квадратами нечетных чисел
Из множества целых чисел получить множество чисел, являющихся квадратами нечетных чисел и...

Даны два множества М и N, состоящие из 10 целых чисел из диапазона 1.100. Из данных множеств выделить соответственно под-множества М1 чисел
Даны два множества М и N, состоящие из 10 целых чисел из диапазона 1..100. Из данных множеств...

Из множества целых чисел от 1 до 30 выделить два множества: чисел, кратных 2 и чисел, кратных 3
Из множества целых чисел от 1 до 30 выделить два множества: чисел, кратных 2 и чисел, кратных 3.

6
0 / 0 / 2
Регистрация: 01.06.2012
Сообщений: 139
19.05.2014, 17:56  [ТС] 2
Более подробный вариант
Вложения
Тип файла: xls ДЛЯ ФОРУМА (DL).xls (19.0 Кб, 9 просмотров)
0
15146 / 6419 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
19.05.2014, 18:34 3
Как я понял, числа с "<" всегда в правильном формате? Выделять можете только первую строку, строку целиком.
Visual Basic
1
2
3
4
5
6
7
8
9
Sub Egor1()
Dim c As Range, n&, s$
For Each c In Intersect(Selection, ActiveSheet.UsedRange).Rows(1).Cells
  s = Trim$(c)
  n = InStrRev(s, ",")
  If n Then s = "0." & String$(Len(s) - n, "0") Else s = "0"
  c.EntireColumn.NumberFormat = s
Next
End Sub
1
0 / 0 / 2
Регистрация: 01.06.2012
Сообщений: 139
25.07.2014, 11:43  [ТС] 4
Народ, помогите оптимизировать код программы, уж оооочень долго производит замену:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub расчет()
For i = 1 To 200
If Cells(2, i + 8) = "" Then
    Exit For
Else
    For j = 1 To 100000
        If Cells(j + 6, 7) = "" Then
            Exit For
        Else
            If Cells(5, i + 8) = "" Then
                Cells(j + 6, i + 8) = Cells(j + 6, i + 8)
            Else
                If Cells(j + 6, i + 8).Value < Cells(6, i + 8).Value Then
                    Cells(j + 6, i + 8) = Cells(5, i + 8)
                End If
            End If
        End If
    Next j
End If
Next i
End Sub
Файлик во вложении.
Огромное спасибо )))))))
Вложения
Тип файла: xls ДЛЯ ФОРУМА - подгонка чисел.xls (22.5 Кб, 6 просмотров)
0
6081 / 1325 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
25.07.2014, 13:15 5
Здравствуйте, Egor.V.A,
Оптимизировал код вашей программы.

Обратите внимание на несколько моментов оптимизации:
  1. В вашей версии кода используются ряды чисел вдоль второй строки и седьмого столбца для определения границ таблицы. В оптимизированной версии кода для определения границ таблицы используется свойство CurrentRegion, поэтому строить ряды чисел вдоль второй строки и седьмого столбца вам больше не нужно.
  2. Строка Cells(j + 6, i + 8) = Cells(j + 6, i + 8) по сути ничего не делает. Из оптимизированной версии она удалена.
  3. Перед обработкой данные выгружаются с листа на массив в памяти, так как операции над данными в массиве выполняются быстрее, чем операции над ячейками листа. После проведения необходимых операций данные выгружаются обратно на лист.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub FastNumberProcessor()
    Dim rng As Range, arr() As Variant, i As Long, j As Long
    Set rng = Application.InputBox("Выделите непустую ячейку внутри таблицы.", Title:="Выбор данных для обработки", Type:=8)
    Set rng = rng.CurrentRegion
    arr = rng
    For j = 1 To UBound(arr, 2)
        If arr(1, j) <> "" Then
            For i = 3 To UBound(arr)
                If arr(i, j) < arr(2, j) Then arr(i, j) = arr(1, j)
            Next i
        End If
    Next j
    rng = arr
End Sub
С уважением,
Aksima
1
0 / 0 / 2
Регистрация: 01.06.2012
Сообщений: 139
25.07.2014, 14:19  [ТС] 6
Я добавил изменения в код, т.к. у меня может быть не одна область с числами:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub FastNumberProcessor()
Dim rng As Range, arr() As Variant, i As Long, j As Long
Set rng = Range(Cells(5, 9), Cells(31, 17))
arr = rng
For j = 1 To UBound(arr, 2)
    If arr(1, j) <> "" Then
        For i = 3 To UBound(arr)
            If arr(i, j) < arr(2, j) Then arr(i, j) = arr(1, j)
        Next i
    End If
Next j
rng = arr
End Sub
0
6081 / 1325 / 195
Регистрация: 12.12.2012
Сообщений: 1,023
25.07.2014, 14:31 7
Egor.V.A, если область с данными в таблице не одна, тогда приглашение в строке:

Visual Basic
1
Set rng = Application.InputBox("Выделите непустую ячейку внутри таблицы.", Title:="Выбор данных для обработки", Type:=8)
- скорректируем так:

Visual Basic
1
Set rng = Application.InputBox("Выделите всю таблицу.", Title:="Выбор данных для обработки", Type:=8)
А строку:

Visual Basic
1
Set rng = rng.CurrentRegion
- убираем.

Но можно поступить и так, как вы сделали. Смотрите сами, как вам удобнее.

С уважением,
Aksima
1
25.07.2014, 14:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.07.2014, 14:31
Помогаю со студенческими работами здесь

Множества: Задано множество целых чисел C. Создать два множества, содержащие числа больше 5 и меньше 5.
Задано множество целых чисел C. Создать два множества, содержащие числа больше 5 и меньше 5. ...

Из множества целых чисел от 1 до 30 выделить два множества
Помогите пожалуйста)) Из множества целых чисел от 1 до 30 выделить два множества: чисел, кратных 2...

Из заданного множества целых чисел выделить множество нечётных чисел и чисел, делящихся без остатка на 17
Дано множество Xl,содержащее целые числа из диапазона . Сформировать новое множество Y путем...

Из множества целых чисел [1.500] получить множество чисел, являющихся квадратами нечетных чисел и вывести их на экран
Из множества целых чисел получить множество чисел, являющихся квадратами нечетных чисел и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru