Μια μικρή πρόταση για το ολογράφως
στην Public Sub FormatVathmos
και στη γραμμή 555
-------------------------------------------------------------------------------
If vathm_period <> "Γραπτά" Then
For i = 9 To lastlinenum + 4
tempcell = "F" & CStr(i)
cell2read = "E" & CStr(i)
olografoslist = "AA1:AB21"
Range(tempcell).Formula = "=IF( ISNUMBER(" & cell2read & "),PROPER(IF(ROUND(" & cell2read & "-INT(" & cell2read & "),1)=1,VLOOKUP(" & cell2read & "+1," & olografoslist & ",2),VLOOKUP(" & cell2read & "," & olografoslist & ",2))) & IF(" & cell2read & "-INT(" & cell2read & ")=0,"""","" & "" & VLOOKUP(ROUND(" & cell2read & "-INT(" & cell2read & "),1)*10 , " & olografoslist & " , 2) & "" δεκ.""),"""")"
Range(tempcell).Formula = "=IF( ISNUMBER(" & cell2read & "),PROPER(VLOOKUP(INT(ROUND(" & cell2read & ",1))," & olografoslist & ",2)) & IF(" & cell2read & "-INT(" & cell2read & ")=0,"""","" & "" & VLOOKUP(ROUND(" & cell2read & "-INT(" & cell2read & "),1)*10 , " & olografoslist & " , 2) & "" δεκ.""),"""")"
Next i
End If
-------------------------------------------------------------------------------
Επεξήγηση φόρμουλας
PROPER(
IF(ROUND(" & cell2read & "-INT(" & cell2read & "),1)=1,
VLOOKUP(" & cell2read & "+1," & olografoslist & ",2),
VLOOKUP(" & cell2read & "," & olografoslist & ",2)
)
)
πρώτο γράμμα κεφαλαίο
Αν η στρογγυλοποίηση του βαθμού στο 1ο δεκ ψηφίο - ακέραιο μέρος (βαθμού) = 1
τότε προσθέτω +1 στο βαθμό και γράφω τη λέξη (ανταποκρίνεται στη στρογγυλοποίηση του 10,95 που γίνεται 11)
αλλιώς γράφω τη λέξη
ΠΙΟ ΑΠΛΑ
PROPER(
VLOOKUP(INT(ROUND(" & cell2read & ",1))," & olografoslist & ",2)
)
πρώτο γράμμα κεφαλαίο
γράψε τη λέξη του ακέραιου μέρους (στρογγυλοποίηση στο 1 δεκ ψηφίο(βαθμός))
&
IF(" & cell2read & "-INT(" & cell2read & ")=0,
"""",
"" & "" & VLOOKUP(ROUND(" & cell2read & "-INT(" & cell2read & "),1)*10 , " & olografoslist & " , 2) & "" δεκ."")
και
Αν ο βαθμός είναι ακέραιος (βαθμός - ΙΝΤ(βαθμός) = 0
τότε κενό
αλλιώς (παίρνω το δεκαδικό μέρος στρογγυλοποιημενο σε 1 δεκ. ψηφίο) * 10 και γράφω & λέξη & δεκ.
ΑΚΟΜΗ ΠΙΟ ΑΠΛΑ;
Μπορούμε να παραλείψουμε την εξαγωγή του ακέραιου μέρους INT(...)
PROPER(VLOOKUP(ROUND(" & cell2read & ",1)," & olografoslist & ",2))
Έτσι γίνεται η δουλειά με μια λίστα 0-20 στην περιοχή olografoslist = "AA1:AB21"
ΑΑ1 = 0 ΑΒ1 = "μηδέν"
ΑΑ2 = 1 ΑΒ2 = "ένα"
ΑΑ3 = 2 ΑΒ3 = "δύο"
...
ΑΑ21=20 ΑΒ21="είκοσι"
Καλό θα είναι οι πίνακες MyNumberList και olografos_string (γραμμή 461 και 484) να τροποποιηθούν ως εξής ώστε να συμπεριλάβουν και την τιμή "0" "μηδεν"
-------------------------------------------------------------------------------
Dim MyNumberList(21) As String
MyNumberList(0) = "0"
MyNumberList(1) = "1"
...
MyNumberList(20) = "20"
-------------------------------------------------------------------------------
και
-------------------------------------------------------------------------------
Dim olografos_string(21) As String
olografos_string(0) = "μηδέν"
olografos_string(1) = "ένα"
...
olografos_string(20) = "είκοσι"
-------------------------------------------------------------------------------
για να είναι ωραίο το ολογράφως και να χωράει στο κελί