Страницы: 1 2 След.
RSS
сортировка чисел
 
Всем добрый день  
очень нужна помощь знатоков  
если не сложно то помогите пожалуйста  
на данный момент нет офиса и поээтому постараюсь на словах описать задачу  
как мне кажется она не очень сложна наверное.  
 
в общем есть два столбца  
строчек в них много. пара сотен тысяч.  
в первом столбце идут числа.  
например так. буду через точку запятую  
 
1; 3; 100; 1; 500; 231; 8904;  
 
то есть цифры идут в произвольном порядке и они периодичски повторяются  
 
во втором столбце по ним идут также цифры. также произвольные и так далее.  
 
суть задачи такая, нужно что бы выдавались расчтё по первому столбцу.  
 
то есть макрос долже выискать во втором столбце все цифры по цифре в первом столбце  
пусть например будет по цифре 1.  
 
и должен их:  
1. просуммировать (цифры могут быть и с минусом и с плюсом). то есть должен быть итог суммированный.  
 
2. необходимо посчитать количество значений. то есть сумма можеть быть 1000. но значений при этом 20. ну ячеек то есть.  
 
3. необходимо подсчитать из этих 20 значений соотношение. то есть из 20 значений может быть 5 значений с минусом а 15 с плюсом. соотвественно нужно процентное соотношение  
то есть как пример 5 делим на 20 и получаем 25% и делим 15 на 20 и получаем 75%  
 
в итоге из двух столбцов данных должно получиться 4 столбца.  
 
в первом столбце сумма чисел  
во втором столбце сумма значений  
в третьем проценты значений с плюсом  
в четвёртом проценты значений с минусом  
 
 
надеюсь я своим корявым языком ясно объяснил)))  
старался очень сильно))  
 
если кто-то поможет то буду премного благодарен, а то я очень сильно задолбался всё это считать через фильтр  
а значений всё больше и ббольше(((  
ПОМОГИТЕ ПОЖАЛУЙСТА ЛЮДИ ДОБРЫЕ)))
 
забыл добавить.  
в первом столбце циры идут в ячейках вниз  
ну то есть стоблец один и в каждой ячейче цифра.  
ну если я вдруг не правильно изъяснил)
 
без примера тяжеловато понять, что хотите :(
Спасибо
 
Да и какой смысл?  
{quote}{login=MAV}{date=23.01.2011 12:06}{thema=сортировка чисел}{post}на данный момент нет офиса {/post}{/quote}  
А значит посмотреть решение не сможете. Будет Офис - выкладывайте файл.
 
наверное вы правы.  
тогда в понедельник с работы выложу.  
в любом случае спасибо огромное что отозвались на просьбу о помощи)
 
Вроде все просто.  
0. Получить список уникальных значений первого столбца с помощью расширенного фильтра.  
1. СУММЕСЛИ  
2. СЧЁТЕСЛИ  
3. СУММПРОИЗВ
 
Мне кажется, тут словарь подключить нужно.  
Вот пример (вероятно от Alex_ST), туда ещё массив (или пару) встроить, где плюсы-минусы собирать.  
 
Sub NoDupesCount()  
Dim Arr(), iArr  
Arr = ActiveSheet.Range("A2:A" & ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row).Value  
With CreateObject("Scripting.Dictionary")  
.CompareMode = vbTextCompare  
For Each iArr In Arr  
If Trim(iArr) <> "" Then .Item(Trim(iArr)) = .Item(Trim(iArr)) + 1  
Next  
ActiveSheet.Range("C2").Resize(.Count) = Application.Transpose(.Keys)  
ActiveSheet.Range("D2").Resize(.Count) = Application.Transpose(.Items)  
End With  
End Sub  
 
Здесь идёт подсчёт уникальных, добавить массив параллельно с значениями и массив для результатов.  
"строчек в них много. пара сотен тысяч." - тогда формулам тяжело будет, если вообще получится.
 
Немного потренировался в коде Hugo..
 
{quote}{login=Маугли}{date=23.01.2011 07:44}{thema=}{post}Немного потренировался в коде Hugo..{/post}{/quote}  
супер!))  
спасибо большое за помощь  
суть задачи понятна почти правильно и реализация почти тоже  
есть несколько ньансов  
уникальные номера в столбце перовм (буква А) не должны быть отрицательными никак.  
то есть они не будут отрицательными и макрос должен это учесть  
второй ньюанс. уникальные числа могут быть и однозначными и двухзначными и шести значными и более.  
и сумму он считает не совсем правильно. возможно из-за этих ньансов.  
и ошибку даёт вот в этой строке  
 
f = 0.5 * (1 + s / (Range("Unik").Cells(i).Value * n))  
 
в любом случае спасибо за помощь  
если кто-то может подправить формулы в макросе, то буду очень благодарен  
если кто может, то помогите пожалуйста
 
А так?
 
{quote}{login=}{date=24.01.2011 07:15}{thema=}{post}А так?{/post}{/quote}  
неа((( всё равно ошибку выдаёт. причём выдаёт ошибку когда я руками забиваю данные в первые два столбца. и данные забиваю например трёхзначные и более  
я вот тут пример наваял. надеюсь понятно ))) и вроде как мог расписал что нужно  
если кому не сложно, помогите пожалуйста  
ну очень надо
 
{quote}{login=MAV}{date=24.01.2011 11:41}{thema=Re: }{post}{quote}{login=}{date=24.01.2011 07:15}{thema=}{post}А так?{/post}{/quote}  
неа((( всё равно ошибку выдаёт. причём выдаёт ошибку когда я руками забиваю данные в первые два столбца. и данные забиваю например трёхзначные и более  
я вот тут пример наваял. надеюсь понятно ))) и вроде как мог расписал что нужно  
если кому не сложно, помогите пожалуйста  
ну очень надо{/post}{/quote}  
я так понял что я выложил какую-то хрень))  
извините пожалуйста. исправляю ошибку.  
выкладываю другой вариант  
Админы, удалите пожалуйста предыдущую версию.  
Спасибо.
 
Люди. ну есть кто тут живой  
помогите если не сложно?  
в файле я вроде расписал всё как нужно  
если что-то не так выразил то скажите плиз  
а то просмотры растут а ответов нет(((
 
Юрий М. вот повторяю свой вопрос.  
как можно сортануть числа как в файле?  
буду ждать вашей помощи. огромное спасибо.  
в файле постарался расписать как можно подробнее.  
выкладываю для разнообразия в архиве)  
Спасибо.
 
для положительных:  
=СУММ((D7=$A$7:$A$21)*($B$7:$B$21>0))/СЧЁТЕСЛИ($A$7:$A$21;D7)  
 
для отрицательных:  
=СУММ((D7=$A$7:$A$21)*($B$7:$B$21<0))/СЧЁТЕСЛИ($A$7:$A$21;D7)
Редко но метко ...
 
GIG_ant, тут не обойтись формулами - автор заявляет о большом количестве строк - до миллиона.
 
{quote}{login=Юрий М}{date=24.01.2011 01:43}{thema=}{post}GIG_ant, тут не обойтись формулами - автор заявляет о большом количестве строк - до миллиона.{/post}{/quote}  
 
ну тогда на основании этих формул набросать макрос )  
если автору формулы не подойдут (пусть попробует), напишем макросом.
Редко но метко ...
 
{quote}{login=Юрий М}{date=24.01.2011 01:43}{thema=}{post}GIG_ant, тут не обойтись формулами - автор заявляет о большом количестве строк - до миллиона.{/post}{/quote}  
дада  
именно так.  
проблема в том что значений может быть миллион и уникальные числа идут в разнобой  
поэтому как я вижу, тут только макрос поможет
 
{quote}{login=GIG_ant}{date=24.01.2011 01:47}{thema=Re: }{post}{quote}{login=Юрий М}{date=24.01.2011 01:43}{thema=}{post}GIG_ant, тут не обойтись формулами - автор заявляет о большом количестве строк - до миллиона.{/post}{/quote}  
 
ну тогда на основании этих формул набросать макрос )  
если автору формулы не подойдут (пусть попробует), напишем макросом.{/post}{/quote}  
пробовал.  
очень напряжно и самое главное велика вероятность ошибок.  
в общем уже всё попробовал и подходит только макрос  
и самое главное время. с макросом всё таки его будет меньше тратится.
 
Как набросок мыслей работает,но практически при Вашем количестве строк -не будет.  
Порядка 32000 строк.
 
{quote}{login=Маугли}{date=24.01.2011 02:34}{thema=}{post}Как набросок мыслей работает,но практически при Вашем количестве строк -не будет.  
Порядка 32000 строк.{/post}{/quote}  
я наверное всех достал. но всё равно немного не так.  
видимо моя вина что не смог объёснить что нужно  
работает почти всё как нужно  
32000 конечно очень мало. а кстати почему так мало? почему больше не будет?  
и есть момент который исправить бы  
есть столбы G и H. в них я так понимаю суммируются отрицательные и положительные значения по всем уникальным числам.  
а нужно по отдельности  
например по уникальному числу 4 два значения. одно отрицательное другое положительное.  
значит соотношение 50% на 50%  
а например по уникальному числу пусть 159 десять значений. 7 положительных и 3 отрицательных.  
значит соотношение 70% на 30%  
при этом предыдущие значения по уникальному числу 4 здесь не должны играть никакой роли.  
то есть расчёты соотношений по каждому уникальному числу должны быть раздельными.  
но этот макрсо уже прям почти близок к тому что нужно)  
спасибо и за эту версию в любом случае.
 
А у меня не так, что-ли?
 
{quote}{login=Маугли }{date=24.01.2011 02:56}{thema=}{post}А у меня не так, что-ли?{/post}{/quote}нет к сожалению для меня(  
я сейчас задал цифры. и соотношение он выдаёт по всем значениям. то есть суммирует положительные и отрицательные значения и выдаёт по ним соотношение.  
а необходимо соотношение по всем уникальным числам по отдельности.
 
Понял.Ошибка была
 
{quote}{login=Маугли}{date=24.01.2011 03:06}{thema=}{post}Понял.Ошибка была{/post}{/quote}  
УРААААААААААААААААААААААААААА!!!!!!!!!!!!!!!!!!!!!!  
то что нужно.  
правда жаль что ограничено 32000 строками  
но я так понимаю это свзано с самим эксэлем.  
и я так понимаю что с этим придётся просто смириться)  
Спасибо Вам огромное Маугли.  
Вы очень сильно выручили меня)
 
Маугли, вот здесь http://www.planetaexcel.ru/forum.php?thread_id=23032&thread_id=23032&page_forum=lastpage&allnum_forum=19#post188681 ZVI показал функцию для извлечения уникальных из больших массивов (с сортировкой). Может пригодиться :-)
 
{quote}{login=Юрий М}{date=24.01.2011 03:37}{thema=}{post}Маугли, вот здесь http://www.planetaexcel.ru/forum.php?thread_id=23032&thread_id=23032&page_forum=lastpage&allnum_forum=19#post188681 ZVI показал функцию для извлечения уникальных из больших массивов (с сортировкой). Может пригодиться :-){/post}{/quote}  
Спасибо огромное за помощь. обязательно почитаю. может уже самостоятельно улучшу.
 
{quote}{login=MAV}{date=24.01.2011 03:22}{thema=Re: }{post}{quote}{login=Маугли}{date=24.01.2011 03:06}{thema=}{post}Понял.Ошибка была{/post}{/quote}  
УРААААААААААААААААААААААААААА!!!!!!!!!!!!!!!!!!!!!!  
то что нужно.  
правда жаль что ограничено 32000 строками  
но я так понимаю это свзано с самим эксэлем.  
и я так понимаю что с этим придётся просто смириться)  
Спасибо Вам огромное Маугли.  
Вы очень сильно выручили меня){/post}{/quote}  
MAV, если бы Знатоки захотели , они справились с Вашей задачей в лучшем виде, без ограничений. Но, видимо, только наблюдают-тренируют Маугли :), ждут когда он освоит массивы.  
Юрий , спасибо за ссылку, тем более от ZVI.
 
> правда жаль что ограничено 32000 строками  
но я так понимаю это свзано с самим эксэлем.  
 
Это потому, что переменные объявлены как Integer.  
Замените на Long (можно выделить и Ctrl+H), и будет работать с миллионом строк.
 
Интересно, распространный прием выбора диапазона при цикле не работает  
Dim i As Double 'при Integer работает  
For i = 1 To Range("A1:A" & Range("A" & Rows.Count).End(xlUp)).Count  
Next  
Im= Range("A1:A" & Range("A" & Rows.Count).End(xlUp)).Count  
For i=1 to im’ работает i as Double  
Next
Страницы: 1 2 След.
Читают тему
Наверх