Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > Общие вопросы .NET
Регистрация

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


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

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

Цитата:
Сообщение от nightofpromises Посмотреть сообщение
IsNothing проверяет пустая ли ячейка. В условии задачи написано что пустые ячейки не должны перемещаться ровным счетом как и ячейки с нечисловыми данными. И потому я использую эту функцию
Ну, тогда нужно:
Код:

if not isnothing(ячейка)

Нам ведь нужны не пустые ячейки.
__________________
http://coub.com/view/2hhtg
pu4koff вне форума   Ответить с цитированием
Старый 20.10.2017, 21:23   #13
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
Репутация: 10
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Ну, тогда нужно:
Код:

if not isnothing(ячейка)

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

Вот еще один момент:
Код:

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 в 21:56.
nightofpromises вне форума   Ответить с цитированием
Старый 20.10.2017, 21:55   #15
pu4koff
Профессионал
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,639
Репутация: 3613
По умолчанию

Вник в код. Для сортировки еще один цикл нужен. Для пузырька получается как-то так:
Код:

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

__________________
http://coub.com/view/2hhtg
pu4koff вне форума   Ответить с цитированием
Старый 20.10.2017, 21:59   #16
pu4koff
Профессионал
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,639
Репутация: 3613
По умолчанию

Цитата:
Сообщение от 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 (которое никогда не будет меньше нуля). Значение в ячейке нужно проверять и работать конкретно этот вариант не будет, т.к. нет никакого накопления
__________________
http://coub.com/view/2hhtg
pu4koff вне форума   Ответить с цитированием
Старый 20.10.2017, 22:07   #17
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
Репутация: 10
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Так опять проверяете, что меньше нуля i (которое никогда не будет меньше нуля). Значение в ячейке нужно проверять и работать конкретно этот вариант не будет, т.к. нет никакого накопления
получается надо проверять значение в ячейке подобно этому условию?
Код:

If (IsNothing(diapozonrange.Cells(i, j)) Or Not IsNumeric(diapozonrange.Cells(i, j).Value))

nightofpromises вне форума   Ответить с цитированием
Старый 20.10.2017, 22:26   #18
pu4koff
Профессионал
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,639
Репутация: 3613
По умолчанию

вариант 1.
прописать в ячейку с суммой ноль, сделать еще вложенный цикл, в котором перебирать все ячейки таблицы и суммировать так.
Вариант 2.
использовать функцию sumif (в русской версии суммесли) из экселя:
Код:

For i = 1 To diapozonrange.Rows.Count
                sumelstr.Cells(i).formula = "=sumif(" & diapozonrange.Rows(i).Address(False, False) & ",""<0"")"
            Next i

__________________
http://coub.com/view/2hhtg
pu4koff вне форума   Ответить с цитированием
Старый 20.10.2017, 22:50   #19
nightofpromises
Пользователь
 
Регистрация: 01.03.2017
Сообщений: 31
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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, 18:02   #20
mihel60
Новичок
 
Аватар для mihel60
 
Регистрация: 16.02.2018
Адрес: Минск, Беларусь
Сообщений: 3
Репутация: 4
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка одинаковых значений по двум столбцам. 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


15:24.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru