download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

Сравняване на данни от екселска таблица

< 1 2 3 >

Автор
Съобщение
zlatena
Пет, 23.12.11, 17:55
Трябва ми едно улеснение в работата.
Как може да направя така:

Да сравня данните в екселска таблица с 4 шиита.
Да сравня данните между първия и втория шиит и разликата,която се получава да събера с данните от третия,а в четвъртия да се получи резултата.
Имената при трите шиита в колона "В" са едни и същи но са разбъркани,това е лошото.

Пробвах тази програма но сякаш не е това,което ми трябва.
Compare Sheets

Закачам примерна таблица.
По лесно ли ще бъде,ако ползвам отделни таблици?
z.xls
Дайте някакъв жокер.
z.rar

редактиран от zlatena на 23.12.11 17:57
редактиран от zlatena на 23.12.11 17:57
kookki
Пет, 23.12.11, 21:50
защо не ги сортираш, след като са разбъркани и да ги провериш на око ?
За 4 страници да се пише програма ми се вижда нерентабилно, според моя опит.
Недялко нещо се губи, иначе щеше да ти предложи някое решение в 4-5 реда код.
zlatena
Пет, 23.12.11, 23:09

RE: Сравняване на данни от екселска таблица

” защо не ги сортираш, след като са разбъркани и да ги провериш на око ?
Защото са повече от сто реда
Забравих да поясня,че в четвъртия шиит,като резултат трябва да се получат попълнени А,В и С колоните.
редактиран от zlatena на 23.12.11 23:09
kookki
Пет, 23.12.11, 23:52

RE: RE: Сравняване на данни от екселска таблица

” Защото са повече от сто реда
Забравих да поясня,че в четвъртия шиит,като резултат трябва да се получат попълнени А,В и С колоните. „

Zlatena, според примера ти ми идват идеи как да се наблъскат в база данни и от там да се сортират и сравняват (защото съм на тази вълна).
Резултатите в четвъртия шиит могат да се сформират с вложени заявки.
Мога да да ти дам примерен код, но не съм уверен и ще трябва да се намеси някой с практически опит. Аз съм просто студент с теоритичен опит

insecteater
Съб, 24.12.11, 16:32
Как сравняваш данните? Ако работиш с диапазони, можеш да именуваш начална и крайна клетка със собствено име и от друг лист да се обръщаш към тях поименно.
zlatena
Нед, 25.12.11, 17:59
Благодаря все пак за включването.
Минавам на вариант "Б".
Ще сравнявам само шиит 1 с шиит 2,после разликата ще мисля как да я добавям към третия.
Намерих една програма,която сякаш ще свърши работа,ама е платена.
ExcelCompare http://www.formulasoft.com/excel-compare.html
Не знам като е бета версия защо искат пари
Пробната им версия не е даже пълнофункционална.
Май ще търся някакво Линукс решение.
phrozencrew
Нед, 25.12.11, 19:56
Е чакай де! Аз тъкмо се включвам в купона. Естествено, че под Linux щеше да стане много лесно. OpenOffice и Libre могат да използват една каруца алтернативни езици, та дори и бай bash ми е Драго. Идеята е да видим как лесно може да стане с M$ Office.
Не се сещам как може да се направи само с формули. Може и да може, ама тря някой да се сети. В случая бих подходил по-рационално и без да губя време ще се насоча към VBA.
Kookki е супер прав, като казва, че би се получило много лесно, ако успеем да докараме работата до бази данни. Бихме могли да сортираме и дъра-бъра. Но пък най-простата база данни е асоциативния масив. Така че направо бих предложил (според условието) да вкараме двата sheet-а (Sheet1 и Sheet2) в 2 асоциативни масиви (Dictionary обекти), които да сравняваме по ключове и разликата в стойностите на еднаквите ключове да записваме в sheet3.
Примерно нещо такова: Book2.xls
Между другото трябва да се активира Scripting Runtime-то, че то съдържа Dictionary обектите:

Възможно е нещо да не съм доразбрал задачката и от бързане да съм омазал нещата.

ПС: За да се стартира макроса:

редактиран от phrozencrew на 25.12.11 20:00
zlatena
Пон, 26.12.11, 14:23
Благодаря за включването в темата.
---------
Мислих си,че е много сложно но то чак ми стана интересно.
Ето условието на задачата.
Пиша го по-скоро, за да не го забравя

Броят на шиитовете е 4.
В нито един шиит,не трябва да има условие за поредността на редовете,тоест те всеки път ще бъдат разбъркани.
Броят на редовете в 1,2,3,4 шиит,винаги,при всяко изпълнение могат да бъдат различна бройка.
В първия шиит данните в колони - А,В,С никога няма да се променят.
Данните в колони "А" и "В" на 2,3,4 шиит също са винаги едни и същи,само в колона "С" ще бъдат различни числа.
Някой редове в 4 шиит ще се повтарят,но данните в колона "А" и "В" ще бъдат еднакви.
Данните в колона "С" на 4 шиит ще бъдат някакви числа.
Идеята е да се сравнят данните на 2 шиит с тези на 1 шиит и ако има разлики да се визуализират в 3 шиит.
После, получените данни от 3 шиит да се съберат с данните от четвъртия шиит,при определени условия.
Ето как мисля да стане:
Взимаме първата позиция от 2 шиит и проверяваме дали я има в 1 шиит.
Проверката става,като проверяваме всеки ред и сверяваме колони "А" и "В",между двата шиита.

Ако първата позиция от 2 шиит присъства някъде в 1 шиит вече сверяваме стойностите в колоните "С" и ако има разлики ги отпечатваме в 3 шиит.
Стойностите от колона "С" на 2 шиит никога не трябва да надхвърлят стойностите на колона "С" от 1 шиит.
Ако ги надхвърлят,трябва да се отбележи по някакъв начин,например да излиза +44.
Ако първата позиция от 2 шиит не присъства някъде в 1 шиит правим така ,че тя да се появи в 3 шиит,естествено със стойностите си от трите колони - А,В,С .
Тоест,само я копираме с всичките колони в 3 шиит.
Ако тази същата позиция не присъства и в 4 шиит,тя повече не ни интересува и спираме да се занимаваме с нея.
По този начин ще се получи първата позиция от 3 шиит.
Задачата продължава:
Дали тази първа позиция присъства в 4 шиит,за да можем да ги сумираме?Проверката става,като проверяваме всеки ред от 4 шиит и сверяваме колони "А" и "В",между 3 и 4 шиит.
Ако позицията от 3 шиит присъства,проверяваме на колко реда от 4 шиит я има и първо сумираме всички стойности на позицията от колона "С" на 4 шиит.
Преди да съберем полученото число от колона "С" на 4 шиит с колона "С" на 3 шиит,го сравняваме с колона "С" на 3 шиит.

Ако позицията е отбелязана в 3 шиит,както в примера( +44 ),както казах я търсим за сравнение в 4 шиит,и ако сумираната вече стойност на колона "С" в 4 шиит е по-малка от +44 просто не извършваме операции с нея,пропускаме я и тя не се появява в 4 шиит.
Ако стойността не е плюсова събираме числата от колони "С" на 3 и 4 шиит.
Крайния резултат е 4 шиит.

Ако някой разбра какво искам ще го почерпя

Всякакви идеи и уточнения и по-лесни решения ще са ми бъдат от полза.

Едит:Таблиците в първия пост не пресъздават много точно това условие.

редактиран от zlatena на 26.12.11 14:25
редактиран от zlatena на 26.12.11 14:45
phrozencrew
Пон, 26.12.11, 15:06
Доколкото схванах сравняваме от ляво на дясно. Нали? Защото сравняването може да бъде в няколко посоки.
zlatena
Пон, 26.12.11, 17:07

RE: Сравняване на данни от екселска таблица

” Доколкото схванах сравняваме от ляво на дясно. Нали? Защото сравняването може да бъде в няколко посоки. „
Опита за сравнение е от ляво на дясно,като се вземат предвид колони и редици.

< 1 2 3 >

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.