Да се научим да работим с Excel - тема [4]

  • 48 162
  • 315
  •   1
Отговори
# 285
  • София
  • Мнения: 22 204
Или премахни text to columns delimited (да, действа по цялата хоризонтална дължина на стринга, докъдето стигне ) или виж в настройките file >> options >> advanced. Там има тикче за показване на различните paste опции.

# 286
  • София
  • Мнения: 406
използвам Delimited, но само в 2 колони, а то ми разбрица цялата таблица, че може и други таблици. И не мога да върна опцията с различните видове Paste, Paste-Value и тн, имам само Paste text.

Пробва ли да ги активираш от file>Options>customize the ribbon  да добавиш от там Paste Special и другите Paste

# 287
  • София
  • Мнения: 10 611
Понеже ми трябва ключ за Win 11 Pro от емаг-а... виждам няколко комплекта с MS Office?
Кой препоръчвате? Не ми трябва за профи неща, но поне да е актуално.
 https://www.emag.bg/windows-11-pro-32-64-bita-i-office-2021-pro- … mbo/pd/D65GBVYBM/
https://www.emag.bg/licenzionen-paket-microsoftr-windows-11-pro- … -81/pd/D083TKYBM/

# 288
  • София
  • Мнения: 1 915
Има ли функция в Ексел, с която число от клетка А1 в клетка B1 да е изписано с думи?

# 289
  • Мнения: 895
Няма. ChatGPT  казва, да се използва макроси и дава примерни.

Хрумва ми, че може в друг работен лист да се въведат числата и названията им подередени едно до друго и да връща с LOOKUP  или VLOOKUP в първия работен лист  - тествах с LOOKUP - работи за цели числа.

# 290
  • София
  • Мнения: 22 204
Да, няма директна функция. Зависи и какви са числата и до колко.
Има вариант с if (ако) len(броя на символите) и left, mid (да хваща определен брой), но това дори не мога да си го подредя в главата в момента. Първо ще са много if във if и второ - са прекалено много сценарии.

Макросът и той ще лежи на такива комбинации и също ще тежи според мен.
Ама пробвай, не пречи.

Иначе да вметна, че питах chatgpt да ми извади членове от законодателството по даден критерий. И имаше измислен член, който разпознах, че няма такава постановка. Като го питах и изкопчих, че го бил прочел във френското право и го сложил на еди- кой си наш член (нямаш нищо общо)

Така че не се доверявайте сляпо.

# 291
  • Мнения: 35 371
Заповядай! В скрит текст, че е дълго.

Скрит текст:
Отворете нов Book.

Извикайте Visual Basic Editor - Alt+F11.
Добавете Module.

 

Маркирайте и копирайте следния код:

Function Spell(NumStr, i)
Static Units(20) As String, Decim(9) As String, Hundr(11) As String, Thous(5) As String, Thous1(5) As String
Static Units1(20) As String
Units(0) = ""
Units(1) = "един "
Units(2) = "два "
Units(3) = "три "
Units(4) = "четири "
Units(5) = "пет "
Units(6) = "шест "
Units(7) = "седем "
Units(Sunglasses = "осем "
Units(9) = "девет "
Units(10) = "десет "
Units(11) = "единадесет "
Units(12) = "дванадесет "
Units(13) = "тринадесет "
Units(14) = "четиринадесет "
Units(15) = "петнадесет "
Units(16) = "шестнадесет "
Units(17) = "седемнадесет "
Units(18) = "осемнадесет "
Units(19) = "деветнадесет "
Units1(0) = ""
Units1(1) = "една "
Units1(2) = "две "
Units1(3) = "три "
Units1(4) = "четири "
Units1(5) = "пет "
Units1(6) = "шест "
Units1(7) = "седем "
Units1(Sunglasses = "осем "
Units1(9) = "девет "
Units1(10) = "десет "
Units1(11) = "единадесет "
Units1(12) = "дванадесет "
Units1(13) = "тринадесет "
Units1(14) = "четиринадесет "
Units1(15) = "петнадесет "
Units1(16) = "шестнадесет "
Units1(17) = "седемнадесет "
Units1(18) = "осемнадесет "
Units1(19) = "деветнадесет "
Decim(0) = ""
Decim(1) = "двадесет "
Decim(2) = "тридесет "
Decim(3) = "четиридесет "
Decim(4) = "петдесет "
Decim(5) = "шестдесет "
Decim(6) = "седемдесет "
Decim(7) = "осемдесет "
Decim(Sunglasses = "деведесет "
Hundr(0) = ""
Hundr(1) = ""
Hundr(2) = "сто "
Hundr(3) = "двеста "
Hundr(4) = "триста "
Hundr(5) = "четиристотин "
Hundr(6) = "петстотин "
Hundr(7) = "шестстотин "
Hundr(Sunglasses = "седемстотин "
Hundr(9) = "осeмстотин "
Hundr(10) = "деветстотин "
Thous(0) = ""
Thous(1) = ""
Thous(2) = "хиляди "
Thous(3) = "милиона "
Thous(4) = "милиарда "
Thous1(0) = ""
Thous1(1) = ""
Thous1(2) = "хиляда "
Thous1(3) = "милион "
Thous1(4) = "милиард "
Dim Num, RetStr
RetStr = ""
Num = CInt(NumStr)
If Num = 0 Then
Spell = RetStr
Exit Function
End If
If Num = 1 Then
Select Case i
Case 1
RetStr = "и " & Units(1) & Thous1(1)
Case 2
RetStr = Thous1(2)
Case Else
RetStr = Units(1) & Thous1(i)
End Select
Spell = RetStr
Exit Function
End If
RetStr = RetStr & "и " & Hundr(CInt(Left(NumStr, 1)) + 1)
If CInt(Right(NumStr, 2)) = 0 Then
Spell = RetStr & Thous(i)
Exit Function
End If
If Mid(NumStr, 2, 1) = "0" Or Mid(NumStr, 2, 1) = "1" Then

If i = 2 Then
Spell = RetStr & "и " & Units1(CInt(Mid(NumStr, 2, 2))) & Thous(i)
Else
Spell = RetStr & "и " & Units(CInt(Mid(NumStr, 2, 2))) & Thous(i)
End If
Exit Function
End If
If Right(NumStr, 1) = "0" Then
RetStr = RetStr & Decim(CInt(Mid(NumStr, 2, 1)) - 1)
Else
If i = 2 Then
RetStr = RetStr & Decim(CInt(Mid(NumStr, 2, 1)) - 1) & "и " & Units1(CInt(Right(NumStr, 1)))
Else
RetStr = RetStr & Decim(CInt(Mid(NumStr, 2, 1)) - 1) & "и " & Units(CInt(Right(NumStr, 1)))
End If
End If
Spell = RetStr & Thous(i)
End Function
Function Slov(ByVal Num As Currency)
Static c(5)
Dim NumStr, NumStr1, i, k
If Not IsNull(Num) Then
NumStr = Trim(CStr(Num))
If Num = 0 Then
Slov = "нула"
Exit Function
End If

Dim Buf As String:
If (Num < 0@) Then Buf = "минус " Else Buf = ""
Dim Frac As Currency: Frac = Abs(Num - Fix(Num))
If (Num < 0@ Or Frac <> 0@) Then Num = Abs(Fix(Num))
Dim AtLeastOne As Integer: AtLeastOne = Num >= 1
i = 1
NumStr = Num
Do
If Len(NumStr) > 3 Then
c(i) = Right$(NumStr, 3)
NumStr = Left$(NumStr, Len(NumStr) - 3)
i = i + 1
Else
c(i) = String(3 - Len(NumStr), "0") & NumStr
Exit Do
End If
Loop
NumStr = ""
For k = i To 1 Step -1
NumStr = NumStr & Spell(c(k), k)
Next k
Debug.Print NumStr
If Left(NumStr, 2) = "и " Then
NumStr = Right$(NumStr, Len(NumStr) - 2)
End If
If Left(NumStr, 2) = "и " Then
NumStr = Right$(NumStr, Len(NumStr) - 2)
End If
'стотинки
If (Frac = 0@) Then
Buf = Buf
ElseIf (Int(Frac * 100@) = Frac * 100@) Then
If AtLeastOne Then Buf = Buf & "и "
Buf = Buf & Format$(Frac * 100@, "00")
Else
If AtLeastOne Then Buf = Buf & "и "
Buf = Buf & Format$(Frac * 10000@, "0000")
End If
Slov = NumStr & Buf ' "лв. "
End If
End Function


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

 
Натиснете Enter.

Въведете числото.



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


ПС: постът визуализира човече , но е осмица и после затваряща скоба.

# 292
  • София
  • Мнения: 22 204
Супер!

# 293
  • Мнения: 690
Soul Free, много полезно! Благодаря!

# 294
  • Мнения: 2 599
Не работи правилно.
13345 се чете "Тринадесет хиляди триста четиридесет и пет".
Скрит текст:
Имам разписана формула която работи с backward compatibility до 2010, но авторът ѝ, т.е. аз, държи да се използва само за лични цели. Ако на някого му трябва за такива цели може да ми прати ЛС

# 295
  • Мнения: 1 116
Здравейте,
извинявам се за може би елементарния въпрос, но тука във форума е силата.
Имам попълнен на хартия дневник за положен извънреден труд, в който по дати са описани часовете и лекарите.
Данните от дневника ги пренасям на ексел, където искам още като въведа датата да ми слага в следващата колона деня от седмицата и съответно в трета колона да пише дали е работен, почивен или празничен, тъй като за начисляването на извънредния труд има значение деня в който е положен.
След което в пивот ми ги подрежда по критерии които съм избрала.
Питам чатджипити, дава ми готова формула, но явно нещо в настройките се разминаваме и не мога да се справя.
Нагледно искам да стане така
20.06.2025, петък, работен, д-р Иванов, 3ч.
21.06.2025, събота, почивен, д-р Тодорова, 1ч.

# 296
  • Мнения: 895
За извеждане на името на деня по дата може да използвате следната формула  =TEXT(<дата>;"dddd").
За определяне на работен/почивен ден можете в друг работен лист да създадете таблица с три колони Ден, Вид (Работен/Почивен), Коефициент и в първия работен лист с VLOOKUP() или LOOKUP(). За празничните/официални почивни дни - по същия начин - в отделен работен лист може да въведете датите и срещу тях коефициент за заплащане и отново в първия работен лист да извличате VLOOKUP() или LOOKUP().

# 297
  • Мнения: 1 116
За извеждане на името на деня по дата може да използвате следната формула  =TEXT(<дата>;"dddd").
За определяне на работен/почивен ден можете в друг работен лист да създадете таблица с три колони Ден, Вид (Работен/Почивен), Коефициент и в първия работен лист с VLOOKUP() или LOOKUP(). За празничните/официални почивни дни - по същия начин - в отделен работен лист може да въведете датите и срещу тях коефициент за заплащане и отново в първия работен лист да извличате VLOOKUP() или LOOKUP().
Очевидно в мен е проблема, още на първата стъпка ми дава грешка.
Празен ексел, в А1 изписвам 1.06.2025, клетката е форматирана като Дата, копирам вашата формула и  =TEXT(<дата>;"dddd") на това място посочвам колона А1

# 298
  • Мнения: 895
Rosheen,
ето при мен как изглежда и работи.Без ъгловите скоби, те се използват за формално означение. Дават, че функцията работи от Excel 2016 нагоре. Аз съм с 365.

# 299
  • Мнения: 2 599
Не разбрах, определяш дали денят е работен, само не изписва деня или какво?
Скрит текст:
A2 датата, B2 =TEXT(A2;"dddd") C2 = IF(WEEKDAY(A2;2)<=5;IF(WORKDAY(A2-1;1;F2:F4)=A2;"работен";"почивен");"почивен")
Съветвам те, да използваш само вътрешното като в календара F2:F4 вкараш всички почивни и уикенд дни. Така няма да имаш и проблем ако по някаква причина има официална работна събота или неделя.
Като екстра може да си направиш календар по години и да се селектира тази колона от календара която съответства на годината.

Общи условия

Активация на акаунт