kunde
Isaan Rules WFF CCC
If you walked away smiling-then for you the price was right
Keep Exceling
Suosikkibändit/artistit: Queen, Rammstein, genesis, Bruce Bringsteen, Kino, Mandref Mann Earth band Who
Lempikirjat: ohjelmointi...
Suosikkipalstat Suomi24 Keskusteluissa: EXCEL, Kivitalot, EPS
En pidä: pakkanen ja loskakelit
Ruoka & juoma: loimulohi ja valkkari
Linkit: http://www.kundepuu.com, Khorat
Koulutus: ---
Ammatti: Tiede/teknologia
Työskentelen: freelancer
Ase tai siviilipalvelus: yliluutnantti
Siviilisääty: Varattu
Lapset: ---
Hakusanat: Thaimaa, korat, Excel, VBA, ACAD, CNC, Polyurea, EPS, MgO elementti
Liittynyt sitten
Muokkaa profiilia7 aloitusta · 1377 kommenttia
- sulla ei ole listassa olevan nimistä taulukkoa...
korjaa nimet oikeaksi ja tsekkaa, että alue A1:A20 ei sisällä tyhjiä tai puuttuvien taulukoiden nimiä
siinäpä se syy... - kyllä se varmaan toimii jollakin toisella koodin pätkällä.
Näkemättä koodiasi vaikea sanoa mitään miksi mättää
voithan kokeilla seuraavia vaihtoehtoisia debuggauskeinoja
immediate window
debug.print
debug.assert
ajamalla rivi kerrallaan F8
local window
ja watch window
aloita kuitenkin lisäämällä Option Explicit moduuliin ekaksi riviksi, joka pakottaa muuttujien määrittämisen - matriisikaavana
{=MIN(IF(A1:E1>0;$A1:$E1))}
Keep EXCELing
@Kunde - http://www.kundepuu.com/viewtopic.php?f=155&t=470
Keep EXCELing
@Kunde - http://www.kundepuu.com/viewtopic.php?f=155&t=471&p=560#p560
Keep EXCELing
@Kunde - sulla ei sivulla CommandButton1 nimistä nappia...
nimeä oikein
Keep EXCELing
@Kunde - http://www.kundepuu.com/viewtopic.php?f=155&t=436&p=521#p521
Keep EXCELing
@Kunde - E2=SUMMA(B2:B600)
solumuotoiluksi oma 00" MIN" - http://www.kundepuu.com/viewtopic.php?f=155&t=435
Keep EXCELing
@Kunde - "Jäi vielä vaivaamaan tuo eka ehdotus, että miksei se pelaa ja selasin ulkolaisilta sivuilta mitä sieltä löytyy ja löysin tämmöisen kaavan
B1 =TEKSTI(A1*29;"kkkk")
En tiedä miten tuo toimii, mutta se toimii."
Excelhän laskee päiväykset lukuina alkaen 1.1 1900 eli toimii siten, että jos solussa A1 on 1 niin 1*29 =29 ja se on 29. päivä vuonna 1900 eli 29.1 ja vastaavasti 2*29=58 on 58. päivä vuonna 1900 eli 27.2 jne.
yksi vaihtoehto lisää
=JOS(A1="";"";VALITSE(A1;"tammikuu";"helmikuu";"maaliskuu";"huhtikuu";"toukokuu";"kesäkuu";"heinäluu";"elokuu";"syyskuu";"lokakuu";"marraskuu";"joulukuu")) - http://www.kundepuu.com/viewtopic.php?f=155&t=314
KeepEXCELing
@Kunde - tälläkin palstalla on pari- kolmekymmentä mun koodaamaa esimerkkiä toisesta taulukosta hausta ja siirroista VBA:lla
hakusanoina esim. haejasiirrä etsijasiirrä kirjoittajana kunde
ei kun muokkaamaan itselle sopivaksi (ei tartte kuin sarake ja taulukon nimet vaihtaa...) - TULOJEN.SUMMA () hylkää ei-numeeriset arvot.Vertailussa palautetaan boolean TRUE/ FALSE arvo, joka ei ole numeerinen. Excel pakotetaan sitten muuttamaan boolean arvot numeroarvoiksi (1 / 0) laskutoimituksissa.
Yksi tapa pakottaa arvo on käyttää unaarista miinusoperaattoria( tupla miinusmerkki --).
Ensimmäinen miinus pakottaa TRUE/ FALSE arvot -1 / 0, sitten käyttämällä sitä uudelleen saadaan sitten arvoiksi 1 / 0.
eli --TRUE=1 ja --FALSE=0
=TULOJEN.SUMMA(--(A1:A10=B1:B10))
toinen tapa TRUE 0 = 1 ja FALSE 0=0
=TULOJEN.SUMMA((A1:A10=B1:B10) 0)
kolmas tapa TRUE*1=1 ja FALSE*1=0
=TULOJEN.SUMMA((A1:A10=B1:B10)*1)
esim. kaavan =TULOJEN.SUMMA(--(A1:A4=B1:B4)) laskutoimitus voisi mennä näin
ENSIMMÄINEN VAIHE (A1:A4=B1:B4)
=TULOJEN.SUMMA({FALSE,TRUE,TRUE,FALSE})
TOINEN VAIHE
eka - merkki
=TULOJEN.SUMMA({0,-1,-1,0})
KOLMAS VAIHE
jälkimmäinen - merkki
=TULOJEN.SUMMA({0,1,1,0})
ja lopputuloksena TULOJEN.SUMMA({0,1,1,0})=2
joskus kaava voi mennä pieleen tosta miinusmerkistä johtuen ja loogista virhettä voi olla todella vaikea keksiä, joten kannattaa tsekkailla esim. tämmöisiä tapauksia
,- (- =- jotka kannattaa kirjoittaa varmuuden vuoksi vastaavasti ,(0- (0- =0-
muutama vaihtoehtoinen kaava vielä. 3 ekaa matriisikaavana
{=SUMMA((A1:A10=B1:B10) 0)}
{=SUMMA((A1:A10=B1:B10)*1)}
{=SUMMA(JOS((A1:A10=B1:B10);1))}
=(A1=B1)*1 (A2=B2)*1 (A3=B3)*1 (A4=B4)*1 (A5=B5)*1 (A6=B6)*1 (A7=B7)*1 (A8=B8)*1 (A9=B9)*1 (A10=B10)*1 - ei mitenkään foorumin softan puitteissa ja muutenkin foorumin käyttäjäystävällisyys koodille on sieltä syvältä..
on olemassa sopivia kooditageja esim. Excel palstalle, mutta täällähän tää ei toimi ja viestit pätkiintyy milloin mistäkin....
ainut keino on laittaa oma linkki tiedostoon mistä ladata - VBA makroilla onnistuu...
Vaihtoehto1.
Tallenna ensin unicode .txt muodossa ja sitten makrosssa avaat ko tiedoston ja korvaat tab merkit puolipisteillä ja tallennat.
Vaihtoehto2
Kopioi tiedot leikepöydälle ja avaa koodilla muistio ja kopioi tiedot sinne ja tallenna
Vaihtoehto3
käytä ADO objektia
Keep EXCELing
@Kunde - korjattavissahan noi olisi kohtuu helposti, nutta aikani ei nyt riitä kun työt haittaa harrastuksia...
- soluun mihin haluat tuloksen kaava esim. =Minimi(C1)
vaihda koontitaulukon nimi sopivaksi (nyt Yhteenveto)
moduuliin...
Option Explicit
Function Minimi(Solu As Range) As Double
Dim i As Integer
Minimi = 9999999999
Application.Volatile True
For i = 1 To Worksheets.Count
If Not Worksheets(i).Name = "Yhteenveto" Then
If IsNumeric(Worksheets(i).Range(Solu.Address)) Then
If Minimi > Worksheets(i).Range(Solu.Address) Then
Minimi = Worksheets(i).Range(Solu.Address)
End If
End If
End If
Next
End Function
Keep EXCELing
@Kunde - tsekkaa mun makro
http://keskustelu.suomi24.fi/node/9418814#comment-46443715
Keep EXCELing
@Kunde - eihän sen vaikeeta pitäs olla....
oletetaan, että nimi sarakkeessa A ja haluat lajitella nimen mukaan. Toimii samoin mille muullekin sarakkeelle
1. tee apusarake rivien loppuun ja laita kaavaksi esim soluun L1=A1
2. rivin 2 loppuun samoin L2=A1
3. maalaa solut L1 ja L2 ja vedä alaspäin tarvittava määrä
4. lajittele apusarakkeen mukaan
5. poista apusarake
Keep EXCELing
@Kunde - Option Explicit
Sub Eilinen()
Dim vastaus As String
On Error Resume Next
ActiveWorkbook.Unprotect
vastaus = MsgBox("Eilinen (Kyllä) vaiko toissapäiväinen (Ei)?", vbQuestion vbYesNo, "Uuden taulukon lisäys")
If vastaus = 6 Then
If Worksheets(Format(Date - 1, "dd.mm.yyyy")) Is Nothing Then
Worksheets("Default").Copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Format(Date - 1, "dd.mm.yyyy")
Else
MsgBox "EILINEN PÄIVÄMÄÄRÄ ON LISÄTTY JO!"
End If
Else
If Worksheets(Format(Date - 2, "dd.mm.yyyy")) Is Nothing Then
Worksheets("Default").Copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = Format(Date - 2, "dd.mm.yyyy")
Else
MsgBox "TOISSAPÄIVÄN PÄIVÄMÄÄRÄ ON LISÄTTY JO!"
End If
End If
ActiveWorkbook.Protect
End Sub
Keep EXCELing
@Kunde