Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Формула в EXCEL

Featured Replies

Привет,

Опитвам се да напиша следната формула в Ексел:

Искам на отделен шийт да ми листва редове по даден критерий в колона. Примерно имам таблица

Иван Нещо си Бла

Драган Нещо си Бла

Петкан Нещо си Бла

Иван Нещо си Бла

И във втори шийт да ми листне според името:

Иван Нещо си Бла

Иван Нещо си Бла

В готовите функции не намирам нищо подходящо, но и честно казано не знам всички. Гледам че може да се пишат функции, но не намирам информация как става това....

10х предварително :P

Едно копиране и поставяне след това като линк (Edit - Paste special - Link) с последващо сортиране по подходящата колона, не върши ли работа ?

  • Автор

При пейст като линк стана една... То аз и не знам и какво трябва да се получи. Би ли конкретизирал.

При пейст като линк стана една... То аз и не знам и какво трябва да се получи. Би ли конкретизирал.

Е маркираш клетките от единия лист и Copy.

Отиваш на другия ли, щракваш в клетка A1 - Edit - Paste special - Paste link.

Трябва да има имаш данните от първия лист във втория. Промяна в първия лист ще се отразява на втория.

Сега ги сортирай.

  • Автор

Ясно...но мисля че няма да ми свърши работа..

Трябва ми като въведа ред в първия шийт да ми листва в останалите шийтове по дадения критерий.

т.е. Въвеждам ред в 1-вия да кажем шийт и ако в дадена колона от него се съдържа даден стринг в друг шийт да ми го добави като ред.

Ясно...но мисля че няма да ми свърши работа..

Трябва ми като въведа ред в първия шийт да ми листва в останалите шийтове по дадения критерий.

т.е. Въвеждам ред в 1-вия да кажем шийт и ако в дадена колона от него се съдържа даден стринг в друг шийт да ми го добави като ред.

Това е по-скоро задача за база данни на Access.

В Excel може да се направи с функции на VBA.

  • Автор

По бази имам някакви базови познания biggrin.gif.. Но ми се струва че с VBA по-лесно ше стане. Ше потърся малко информация за синтаксиса му и ще пиша ако намеря решение на проблема.

Ако някой все пак се сети нещо по-лесно нека пише.

btw къде се въвеждат функциите писани на VBA?

По бази имам някакви базови познания biggrin.gif.. Но ми се струва че с VBA по-лесно ше стане. Ше потърся малко информация за синтаксиса му и ще пиша ако намеря решение на проблема.

Ако някой все пак се сети нещо по-лесно нека пише.

btw къде се въвеждат функциите писани на VBA?

VBA - Visual Basic for Applications.

Tools - Macro - Visual Basic editor

Не знам каква е задачата, но за мен въвеждане на едни и същи данни в две таблици без връзка помежду си, е безмислено.

Ако трябва само да се въвеждат данни, това може да стане чрез използване на форма (Data - Form)

Редактирано от Ken (преглед на промените)

  • Автор

Доста аматьорски, но все пак без никакви познания по VB с едночасово ровене из хелп-а на офис-а успях да съчиня следното:

Sub Cp()

Dim i, j, line As Integer

line = 2

For i = 1 To 30

If Worksheets("ALL").Cells(i, 2).Value = Cells(1, 1) Then

For j = 1 To 20

Cells(line, j) = Worksheets("ALL").Cells(i, j)

Next j

line = line + 1

End If

Next i

End Sub

Копира всички редове от таблица 1 в съответната таблица ако на 2-ра колона се съдържа стринг, който съм въвел в поле 1,1.

Доста тегав синтаксис има този VBА. Може би защото за пръв път се сблъсквам с него...

Темата е формула, а не VBA. Доста опит имам с VBA и мога да направя почти всичко (възможно) с него. С формули файлът става малко по голям по размер, но и човек без опит в блок-схеми и алгоритми може да съобрази (ако помисли повечко). В случая на първата страница е мястото, където ще се пише. Примерно на реда над антетките може да има една формула от рода на =Counta($b$3:$b$20000), която да сметне колко реда данни са удянати. Трябва да се разберем предварително да няма празни редове, в колона А да има номер по ред например в клетка А3 да има =row(a2)+1 и т.н. Данните в колона B трябва да са от текстов вид. След края на колоните с данни трябва да добавите n (колкото са следващите шийтове) колони със служебни ифове. Те показват низа, който се търси в съответния шийт ако го има и празно, ако го няма. Във всеки от шийтовете трябва да има едно поле с търсения низ, например B1. С формулата =offset (прочетете хелпа) как по номера на реда (колона 1 в първия шийт) може да изведете в друг шийт която и да е клетка от реда. Тоест проблемът е да познаете има ли даден низ в реда, ако има - с offset спрямо първа колона извеждате стойността. Ако няма - извеждате спейс. Остава в първа колона на следващите шийтове да има в последователни клетки номерата на редовете, в които се среща низа. Търсенето става в ония допълнителни колони с ифове от първия шийт. В ред 3 се търси от ред 3 до ред 20000. Вместо до 20000 може чрез address и indirect да се търси до действителния край на шийт 1 (нали си спомняте, че отгоре направихте една клетка с броя на редовете. В следващия ред - (само ако в първия има нещо) - от реда, посочен в предходия ред до ред 20000 и т.н. Ако в предходния ред няма нищо - и в този нищо. Трябва да се копират формулите в толкова на брой реда, колкото има в шийт 1, или толкова, колкото мислим, че не може да надхвърлят - и това във всеки от следващите шийтове. От полза за търсенето ще са формулите =Vlookup, с която става откриването и indirect(address(3,2) & ":" & address(2+Sheet1!$a$1)), с която вътре във Vlookup се посочва откъде и докъде да се търси. С пробите и неизбежните грешки имате около час и полоина, два работа. Има добър хелп за функциите. С VBA е до половин час с коментарите, за тези които пишат коментари, ама трябва повечко знания и опит с алгоритми и VBA.

  • Автор

Оправих се с VBA. Стана перфектно. Дори си написах и няколко други функции. Няма да поствам кода, защото е персонализиран според нуждите ми. Ако някой има въпроси нека пише.

Много 10х на Ken и Оnkel, че ме насочиха какво да търся. ;)

Имам подобно питане, но моята цел е да събирам като сума в една клетка, откритите стойности по критерий на съвпадане.

Давам пример, за да ми е по-ясно питането:

В колона А са бар-кодовете на различни артикули. Понеже таблицата е хронологична по дни за продажбите, бар-кодовете се повтарят от време на време.

В колона В е бройката, продадена от съответния артикул за деня.

Искам в друг шийт да си направя списък на бар-кодовете на артикулите и срещу тях да се натрупват бройките, продадени от съответния артикул за целия период.

Дано съм си задала ясно въпроса и някой да ме насочи.

Имам и още един въпрос - как мога да задам в една колона, стойностите по-малки от 5 да са в синьо, а по-големите от 5 да са в червено?

Очаквам вашите предложения :tease:

Имам подобно питане, но моята цел е да събирам като сума в една клетка, откритите стойности по критерий на съвпадане.

Давам пример, за да ми е по-ясно питането:

В колона А са бар-кодовете на различни артикули. Понеже таблицата е хронологична по дни за продажбите, бар-кодовете се повтарят от време на време.

В колона В е бройката, продадена от съответния артикул за деня.

Искам в друг шийт да си направя списък на бар-кодовете на артикулите и срещу тях да се натрупват бройките, продадени от съответния артикул за целия период.

Дано съм си задала ясно въпроса и някой да ме насочи.

Имам и още един въпрос - как мога да задам в една колона, стойностите по-малки от 5 да са в синьо, а по-големите от 5 да са в червено?

Очаквам вашите предложения :)

Ако предположим, че на Sheet1 имаш колони Barcode и Number :

excel1c.jpg

на Sheet2 може да получиш :

excel2.jpg

като в колона A на Sheet2 въведеш стойностите за баркодове, а клетка B2 на Sheet2 въведеш формулата:

=SUMIF(Sheet1!$A2:$A20;A1;Sheet1!$B2:$B20)

и я размножиш надолу за всички баркодове.

По втория въпрос може да разгледаш функцията Conditional Formating от меню Format.

btw има ли начин функциите да връщат резултат? Или по-точно как се пише рекурсивна функция на VBA?

Резултат от функция :

Function Function_Name(instring As String) As String

.....

Some_Value=1

.....

Function_Name=Some_Value


End Function
За рекурсията :
Function Factorial2(n As Integer) As Double

' Recursive function to calculate a factorial

If n < 1 Then

Factorial2 = 1

Else

Factorial2 = n * Factorial2(n - 1)

End If

End Function

  • Автор
Имам подобно питане, но моята цел е да събирам като сума в една клетка, откритите стойности по критерий на съвпадане.

Давам пример, за да ми е по-ясно питането:

В колона А са бар-кодовете на различни артикули. Понеже таблицата е хронологична по дни за продажбите, бар-кодовете се повтарят от време на време.

В колона В е бройката, продадена от съответния артикул за деня.

Искам в друг шийт да си направя списък на бар-кодовете на артикулите и срещу тях да се натрупват бройките, продадени от съответния артикул за целия период.

Дано съм си задала ясно въпроса и някой да ме насочи.

Имам и още един въпрос - как мога да задам в една колона, стойностите по-малки от 5 да са в синьо, а по-големите от 5 да са в червено?

Очаквам вашите предложения :)

Първия ти въпрос е подобен на моя. Много лесно се прави с VBA НО готова функция за съжаление няма, освен ако баркодовете не са толкова много и ръчно не ги копираш на другия шийт в комбинация със sumif както каза Ken.

/edit

Mного 10х. :clap:

Редактирано от Progres (преглед на промените)

Ей, супер си, Кен! Много ти благодаря. Пробвах няколко варианта с тази функция, но все не ми се получаваше, а то било по най-простия начин... Радвам се, че мога да науча полезни неща от хора, кат Вас!

Поздрави!

Имам и още един въпрос - как мога да задам в една колона, стойностите по-малки от 5 да са в синьо, а по-големите от 5 да са в червено?

Очаквам вашите предложения :)

Format - Conditional Formatting...

Progres,

LOOKUP функциите не ти ли вършат работа - VLOOKUP HLOOKUP. Точно търсене по критерий в масив и листване на каквото си искаш.

Успех.

Редактирано от KTT (преглед на промените)

Регистрирайте се или влезете в профила си за да коментирате

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.