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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2017, 20:13   #11
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
А смысл их местами менять?
Сначала смотрим: ага. пустая ячейка. следующим условием проверяем: в пустой ячейке записано число? естественно дальше этих проверок никуда не уйдём. Тут или ячейка пустая или в ней число. Может вообще это IsNothing выкинуть или чего этим хотите проверить?
IsNothing проверяет пустая ли ячейка. В условии задачи написано что пустые ячейки не должны перемещаться ровным счетом как и ячейки с нечисловыми данными. И потому я использую эту функцию
nightofpromises вне форума Ответить с цитированием
Старый 20.10.2017, 20:16   #12
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Цитата:
Сообщение от nightofpromises Посмотреть сообщение
IsNothing проверяет пустая ли ячейка. В условии задачи написано что пустые ячейки не должны перемещаться ровным счетом как и ячейки с нечисловыми данными. И потому я использую эту функцию
Ну, тогда нужно:
Код:
if not isnothing(ячейка)
Нам ведь нужны не пустые ячейки.
pu4koff вне форума Ответить с цитированием
Старый 20.10.2017, 20:23   #13
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Ну, тогда нужно:
Код:
if not isnothing(ячейка)
Нам ведь нужны не пустые ячейки.
Пустые ячейки перемещаются, а это неправильно
nightofpromises вне форума Ответить с цитированием
Старый 20.10.2017, 20:48   #14
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
Печаль

Вот еще один момент:
Код:
For i = 1 To diapozonrange.Rows.Count
                If i < 0 Then
                    sumelstr.Cells(i).formula = "=SUM(" & diapozonrange.Rows(i).address(False, False) & ")"
                End If
            Next i
Строка
Код:
sumelstr.Cells(i).formula = "=SUM(" & diapozonrange.Rows(i).address(False, False) & ")"
не считает сумму элементов строк, значения которых меньше 0.
Снимок.PNG

Последний раз редактировалось nightofpromises; 20.10.2017 в 20:56.
nightofpromises вне форума Ответить с цитированием
Старый 20.10.2017, 20:55   #15
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Вник в код. Для сортировки еще один цикл нужен. Для пузырька получается как-то так:
Код:
For j = 1 To diapozonrange.Columns.Count
                For i = 1 To diapozonrange.Rows.Count - 1
                    If (IsNothing(diapozonrange.Cells(i, j)) Or Not IsNumeric(diapozonrange.Cells(i, j).Value)) Then
                        Continue For
                    End If
                    For k = i + 1 To diapozonrange.Rows.Count
                        If (Not IsNothing(diapozonrange.Cells(k, j)) And IsNumeric(diapozonrange.Cells(k, j).Value)) Then
                            If (diapozonrange.Cells(i, j).Value > diapozonrange.Cells(k, j).Value) Then
                                temp = diapozonrange(i, j).Value
                                diapozonrange(i, j).Value = diapozonrange(k, j).Value
                                diapozonrange(k, j).Value = temp
                            Else
                            End If
                        End If
                    Next k
                Next i
            Next j
pu4koff вне форума Ответить с цитированием
Старый 20.10.2017, 20:59   #16
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Цитата:
Сообщение от nightofpromises Посмотреть сообщение
Вот еще один момент:
Код:
For i = 1 To diapozonrange.Rows.Count
                If i < 0 Then
                    sumelstr.Cells(i).formula = "=SUM(" & diapozonrange.Rows(i).address(False, False) & ")"
                End If
            Next i
Строка
Код:
sumelstr.Cells(i).formula = "=SUM(" & diapozonrange.Rows(i).address(False, False) & ")"
не считает сумму элементов строк, значения которых меньше 0.
Вложение 90003
Так опять проверяете, что меньше нуля i (которое никогда не будет меньше нуля). Значение в ячейке нужно проверять и работать конкретно этот вариант не будет, т.к. нет никакого накопления
pu4koff вне форума Ответить с цитированием
Старый 20.10.2017, 21:07   #17
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Так опять проверяете, что меньше нуля i (которое никогда не будет меньше нуля). Значение в ячейке нужно проверять и работать конкретно этот вариант не будет, т.к. нет никакого накопления
получается надо проверять значение в ячейке подобно этому условию?
Код:
If (IsNothing(diapozonrange.Cells(i, j)) Or Not IsNumeric(diapozonrange.Cells(i, j).Value))
nightofpromises вне форума Ответить с цитированием
Старый 20.10.2017, 21:26   #18
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

вариант 1.
прописать в ячейку с суммой ноль, сделать еще вложенный цикл, в котором перебирать все ячейки таблицы и суммировать так.
Вариант 2.
использовать функцию sumif (в русской версии суммесли) из экселя:
Код:
For i = 1 To diapozonrange.Rows.Count
                sumelstr.Cells(i).formula = "=sumif(" & diapozonrange.Rows(i).Address(False, False) & ",""<0"")"
            Next i
pu4koff вне форума Ответить с цитированием
Старый 20.10.2017, 21:50   #19
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
вариант 1.
прописать в ячейку с суммой ноль, сделать еще вложенный цикл, в котором перебирать все ячейки таблицы и суммировать так.
Вариант 2.
использовать функцию sumif (в русской версии суммесли) из экселя:
Код:
For i = 1 To diapozonrange.Rows.Count
                sumelstr.Cells(i).formula = "=sumif(" & diapozonrange.Rows(i).Address(False, False) & ",""<0"")"
            Next i
Спасибо, теперь все работает
nightofpromises вне форума Ответить с цитированием
Старый 16.02.2018, 17:02   #20
mihel60
 
Аватар для mihel60
 
Регистрация: 16.02.2018
Сообщений: 3
По умолчанию

Интересно а можно сортировать таблицу по цветам ячеек?
mihel60 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка одинаковых значений по двум столбцам. Excel 2007 Client2006 Microsoft Office Excel 6 15.04.2013 07:00
Сортировка по столбцам. павел павел Microsoft Office Access 28 09.11.2012 20:25
Сортировка по столбцам. (Паскаль) xEk Помощь студентам 0 20.05.2012 12:01
Сортировка по нескольким столбцам таблицы. S_Yevgeniy Помощь студентам 3 27.07.2011 19:03
Сортировка таблицы по нескольким столбцам KobolD Помощь студентам 0 21.06.2010 17:21