Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 02:59 14.05.24 
Компютри и Интернет
   >> Електронни таблици
*Кратък преглед

Страници по тази тема: 1 | 2 | 3 | (покажи всички)
Тема For and Next ...  
Автор vector_m (непознат )
Публикувано19.03.12 19:20



Здравейте!

Моля ви ако някой знае да ме светне що се получава така:
Имам два листа : "Справка" и "База",до тук добре
В лист "База" от "А1" до "А30" съм поставил трите имена на хора...
В лист "Справка в колона "А" от 1 ред до 30 ред имам същия списък от хора но в разбъркан ред , тоест ако Димитър Петров Петров в лист "База" е на първия ред , то в лист "Справка" е да кажем на третия ред...
В лист "Справка" съм поставил бутон който прехвърля данните срещу всеки човек в лист "База" срещу съответния човек!
Ето го кода:
For J = 12 To 55
If (Sheets("Справка").Cells(J, 2)) = (Sheets("База").Cells(J, 2)) Then
Sheets("База").Cells(J, 5) = Sheets("Справка").Range("AQ" & J)
Sheets("База").Cells(J, 6) = Sheets("Справка").Range("AL" & J)
Sheets("База").Cells(J, 7) = Sheets("Справка").Range("AK" & J)
Sheets("База").Cells(J, 41) = Sheets("Справка").Range("AP" & J)
End If
Next J
Нещата се получават ако в лист "Справка" и в лист "База" имената се съвпадат по редове , пример: лист "Справка" в клетка "А1" - Димитър Петров Петров и в лист "База" в клетка "А1"- Димитър Петров Петров.

Идеята ми е такава: реда на имената написани в лист "Справка" да не съвпада с реда на имената в лист "База"
Тоест взимам си едно име примерно: Петър Петров Петров е в клетка "А3" в лист : "Справка", а в лист "База" Петър Петров Петров е в клетка "А10". Когато натисна бутона "Прехвърли" то данните срещу Петър в лист "Справка" да се отпечатат точно срещу Петър в клетка "А10" в лист "База".
Много съм обстоятелствен, но вече дълго време не мога да си обясня защо с този сорс не се поучава.
Благодаря ви !



Тема Re: For and Next ...нови [re: vector_m]  
АвторИвaн (Нерегистриран)
Публикувано19.03.12 19:36



Аз бих сложил преди
END IF
едно ELSE
после да мушна един код между ELSE и ENDIF , с който да потърся тва дет ми требе и като го намерия да си прехвърля (ако го намеря де).

Напиши кво не е ясно и ако има проблем да ръсим още мозък....

Малко тва A1 do A30 не схванах що цикъла е от 12 до 55, ама нейсе...Може съм попрекалил с мастиката...



Тема Re: For and Next ...нови [re: Ивaн]  
Автор vector_m (непознат )
Публикувано19.03.12 20:02



Ами идеята ми е такава :
В лист "База" списъка от хора няма да се променя , т.е мястото на хората в списъка няма да се променя , та така да стане че да се търси съвпадение на имена и когато има такова то там да постави данни .

Защото с този сорс, който съм постнал ако примерно Иван в лист "Справка" е в клетка "А1" и в клетка "В1" има числото 5 , а в лист "База" Иван е в клетка "А10" то срещу Иван , в клетка "В10" в лист "База" , се отпечатва нула а не числото 5 , тоест приема, че ЧОВЕКА в лист "Справка" в клетка "А1" не равно на аналогичната клетка в лист "База"
Не зная как да го обясня...



Тема Re: For and Next ...нови [re: Ивaн]  
АвторИвaн (Нерегистриран)
Публикувано20.03.12 08:09



Казано с други думи:
По-горе написах, че ти проверяваш (и правиш нещоситам), когато ЕДНОТО е РАВНО на ДРУГОТО. Драсни код и в случаите, когато ЕДНОТО НЕ Е РАВНО на ДРУГОТО. Демек В ПРОТИВЕН СЛУЧАЙ - тва дет американците му викат ELSE.
Там трябва да има код, дето да търси на кой ред е РАВНОТО НЕЩО и ако го намери да го прехвърли в другия лист.
Напиши кода и ако не работи го copy/paste тука.



Тема Re: For and Next ...нови [re: vector_m]  
Автор пpивeт (:-)
Публикувано20.03.12 17:16



Първо виж какво прави командата
VLOOKUP, дали няма да се разминеш без макрос.

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

Дали ме разбра?

Съкращавайте фразите до размера на мисъл. М.Вайсберг


Тема Re: For and Next ...нови [re: пpивeт]  
Автор vector_m (непознат )
Публикувано21.03.12 09:32



Здравей!
По- добре с макрос!
Разбирам идеята ти , но не ми е ясно как да я реализирам! Би ли ми подсказал как става това? Благодаря за съдействието! :)



Тема Re: For and Next ...нови [re: vector_m]  
АвторИвaн (Нерегистриран)
Публикувано21.03.12 12:05



For J = 12 To 55
If (Sheets("Справка").Cells(J, 2)) = (Sheets("База").Cells(J, 2)) Then
Sheets("База").Cells(J, 5) = Sheets("Справка").Range("AQ" & J)
Sheets("База").Cells(J, 6) = Sheets("Справка").Range("AL" & J)
Sheets("База").Cells(J, 7) = Sheets("Справка").Range("AK" & J)
Sheets("База").Cells(J, 41) = Sheets("Справка").Range("AP" & J)
End If
Next J

това аз бих го преработил така:

sub AlaBala( J as long)
DIM J as long, Namereno as boolean, K as long, St as String

namereno=false
K=11
while (K<55) and (not namereno) do
K=K+1
namereno=(Sheets("Справка").Cells(J, 2)) = (Sheets("База").Cells(K, 2))
wend

if namereno then
Sheets("База").Cells(K, 5) = Sheets("Справка").Range("AQ" & J)
Sheets("База").Cells(K, 6) = Sheets("Справка").Range("AL" & J)
Sheets("База").Cells(K, 7) = Sheets("Справка").Range("AK" & J)
Sheets("База").Cells(K, 41) = Sheets("Справка").Range("AP" & J)
else
st="Не спи като въвеждаш!"
Sheets("База").Cells(K, 5) = st
Sheets("База").Cells(K, 6) = st
Sheets("База").Cells(K, 7) = st
Sheets("База").Cells(K, 41) = st
end if

end Sub
Е, не претендирам за грешки в кода, ама нещо таквоз...
Ако цикълът е с FOR имаш винаги обхождане до края (освен ако не излезеш принудително, ама не е за предпочитане таквоз програмиране).Даже и да го намери тенекето на 1 още....При голяма номенклатура - ще се бави.
Разбира се могат да се ползват и готовите функции на М$. Аз не го правя по 2 причини (винаги когато мога де):
1.По-лесно е ако един ден се наложи за преработка за в опънатия офис
2.Мразим М$ (работим на продуктите му по принуда). По секакъв начин те карат те да си все по-зависим от тях...

Ади пиши кво стана с кода.



Тема Re: For and Next ...нови [re: Ивaн]  
АвторИвaн (Нерегистриран)
Публикувано21.03.12 12:08



Дефинирал съм по погрешка още веднъш J.

DIM J as long, Namereno as boolean, K as long, St as String

го направи:

DIM Namereno as boolean, K as long, St as String

То интерпретатора на ЕКСЕЛА сигурно щеше да ревне, ама знам ли... Дано нема още грешки че кода го писах направо тука.



Тема Re: For and Next ...нови [re: Ивaн]  
Автор vector_m (непознат )
Публикувано21.03.12 20:25



Както казваш ти Ексела ревна!
Аз ти благодаря, че съдействаш!
Значи, първо реда с do светна - не ми е ясно за какво е и за това го махнах; Второ, реда Namereno = (Sheets("&#209;&#239;&#240;&#224;&#226;&#234;&#224;").Cells(J, 2)) = (Sheets("&#193;&#224;&#231;&#224;").Cells(K, 2)) и той светна;
ето сорса:


Private Sub CommandButton2_Click()
Dim Namereno As Boolean, K As Long, St As String
If MsgBox("Моля, изчакайте, докато данните се прехвърлят !", vbOKCancel + vbInformation, "Прехвърляне...") = vbOK Then
For J = 12 To 55
Namereno = False
K = 11
While (K < 55) And (Not Namereno)

K = K + 1
Namereno = (Sheets("Справка").Cells(J, 2)) = (Sheets("База").Cells(K, 2))
Wend
If Namereno Then
Sheets("База").Cells(K, 5) = Sheets("Справка").Range("AQ" & J)
Sheets("База").Cells(K, 6) = Sheets("Справка").Range("AL" & J)
Sheets("База").Cells(K, 7) = Sheets("Справка").Range("AK" & J)
Sheets("База").Cells(K, 41) = Sheets("Справка").Range("AP" & J)
Else
St = "Не спи като въвеждаш!"
Sheets("База").Cells(K, 5) = St
Sheets("База").Cells(K, 6) = St
Sheets("База").Cells(K, 7) = St
Sheets("База").Cells(K, 41) = St
End If
Next J
End If
end sub

Благодаря!



Тема Re: For and Next ...нови [re: vector_m]  
АвторИвaн (Нерегистриран)
Публикувано21.03.12 21:09



Сорка за error-a проблемът е в предмониторното устройство. Все ги бъркам двата щата БАЗИКА и ПАСКАЛА (делфи де). Махнал си го DO - добре!
Ако бях на твое място бих преработи кода така:

Private Sub CommandButton2_Click()
Dim Namereno As Boolean, K As Long, St As String
Dim Name1 as string,Name2 as string, J as long
'J си го дефинирам по навик от паскала,че там е задължително
'при различните видове БАЗИЦИ и може и да не се дефинира
'но имаше некъв БАЗИК дето бачкаше до 10 недефиниран масив (напр)....
Name1="База"
Name2="Справка"
'тука избягвам варианта - кирилица/латинаица и грешно изписване на името на листа
If MsgBox("Моля, изчакайте, докато данните се прехвърлят !", vbOKCancel + vbInformation, "Прехвърляне...") = vbOK Then
For J = 12 To 55
Namereno = False
K = 11
While (K < 55) And (Not Namereno)

K = K + 1
Namereno = (Sheets(Name2).Cells(J, 2).value = Sheets(Name1).Cells(K, 2) .Value)
Wend
If Namereno Then
Sheets(Name1).Cells(K, 5) = Sheets(Name2).Range("AQ" & J)
Sheets(Name1).Cells(K, 6) = Sheets(Name2).Range("AL" & J)
Sheets(name1).Cells(K, 7) = Sheets(Name2).Range("AK" & J)
Sheets(Name1).Cells(K, 41) = Sheets(Name2).Range("AP" & J)
Else
St = "Не спи като въвеждаш!"
Sheets(Name1).Cells(K, 5).value = St
Sheets(name1).Cells(K, 6).value = St
Sheets(Name1).Cells(K, 7).value = St
Sheets(Name1).Cells(K, 41).value = St
End If
Next J
End If
end sub



И да знаш: тва VALUE все го изтървам...Ае че чъм на греянка, че с тва гадното време - пролет-зимя-лято нещо съм прихванал. А както казват мислителите:
ВСИЧКИ БОЛЕСТИ ИДАТ ОТ НЕРЕДОВНОТО ПИЕНЕ!

Наздраве и пиши кво е станало.




Страници по тази тема: 1 | 2 | 3 | (покажи всички)
*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.