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
- oma solumuotoilu [mjavascript:void(0);m]
- Sub TäytäKaava()
Dim vika As Integer
vika = Range("K65536").End(xlUp).Row
Range("M1").FormulaR1C1 = "=IF(RC[-2]>0,RC[-2]*RC[-6],"""")"
Range("M1").AutoFill Destination:=Range("M1:M" & vika)
End Sub
Keep EXCELing
@Kunde - Miten sen saisi lisättyä niin että se poistaa myös ne rivit jotka ovat tyhjiä kuten ketjun aloittaja kysyi, mutta joihin on sisälletty jokin funktio ?
tarkoitatko soluja, joissa kaava 'ja tulos on tyhjä vaiko
soluja, jotka tyhjiä solut, joissa kaava? - simppeli ratkaisu
oletetaan, että sulla vaikka 2000 nimikettä sarakkeessa A1:A2000 ja ja luvut sarakkeessa B1:B2000(vain esimerkkinä, voi olla kuinka monta vaan )
Kuvaajan tiedot vastaavasti E1:F20000
Kun aloitat kuvaajan tekoa niin laita soluun E1 =1 tai montako niitä lukuja onkaan alkuhetkellä ja vastaava summa soluun F1
tee kaavio data-alueesta esim. E1:F2000
Ala sitten syöttömään lukuja nimikkeille ja kaavio päivityy sitä mukaan.
mallikoodissa lisää nyt pvm ja kpl, mutta hipsaamalla sen rivin ja poistamalla riviltä
' Range("E10000").End(xlUp).Offset(1, 0) = Application.WorksheetFunction.Count(Range("B:B"))
hipsun, saat kpl ja summakaavion.
taulukon moduuliin...
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B:B")) Is Nothing Then
' eiintymien määrä
' Range("E10000").End(xlUp).Offset(1, 0) = Application.WorksheetFunction.Count(Range("B:B"))
' päivämäärä
Range("E10000").End(xlUp).Offset(1, 0) = Date
Range("E10000").End(xlUp).Offset(0, 1) = Application.WorksheetFunction.Sum(Range("B:B"))
End If
End Sub
Keep EXCELing
@Kunde - tallentaa samaan kansioon kuin originaali
jos samanniminen kysyy tallennetaanko päälle
saa pois ton kyssärin, jos haluaa, ottamalla hipsun pois riviltä
'Application.DisplayAlerts = False
moduuliin...
Sub copyAndSave()
Dim ws As Worksheet
On Error Resume Next
Application.ScreenUpdating = False
'Application.DisplayAlerts = False
For Each ws In Worksheets
ws.Copy
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & ws.Name & ".xlsx"
ActiveWorkbook.Close
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Keep EXCELIng
@Kunde - noduuliin...
Sub Poista()
Range("H:H").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Keep EXCELing
@Kunde - http://msdn.microsoft.com/en-us/library/office/ff194426.aspx
- Function IBAN(Solu As String) As String
IBAN = Left(Solu, 4) & " " & Mid(Solu, 5, 4) & " " & Mid(Solu, 9, 4) & " " & Mid(Solu, 13, 4) & " " & Mid(Solu, 17, 2)
End Function
Keep EXCELing
@Kunde - taulukon oduuliin...
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Target = StrConv(Target, vbProperCase)
End If
End Sub
Keep EXCELing
@Kunde - jos sallitaan XXX kpl lukuja eri tai samoja summaan YYY, niin siinäpä alkaa olla tekemistä. Kokeilin VBA:lla tehdä, mutta tyhmyyteni alkoi paljastua aika pian ja tyydyttävää ratkaisua en saanut. Monesti jäi osatuloksista pois,, mutta aina kuitemkin 1 oikean ratkaisun saan.
Haasteellinen juttu sanon minä. Eikös toi mee 2 potenssiin lukujen määrä noi variaatiot eli kasvaa aika nopeasti jos lukujen määrä kasvaa?
Arrayrta sinä åyörittelin yhtä jos toista, mutta en tajua miksi se pudotti oikeita tuloksia pois välillä. Jos kerkiin niin kattelen vielä tota
Keep EXCELing
@Kunde - ilmeisesti sulta jäi toi I tosta esimerkki muotoilusta pois...
en tiedä onko IBAN tilinumero aina samanpituinen (en jaksanut tarkistaa..) ?
jos on niin tossa tosi simppeli käyttäjän oma funktio
moduuliin..
Function IBAN(Solu As String) As String
IBAN = Left(Solu, 5) & " " & Mid(Solu, 6, 4) & " " & Mid(Solu, 10, 4) & " " & Mid(Solu, 14, 3) & " " & Mid(Solu, 17, 2)
End Function.
ja soluun mihin haluat muotoiltuna IBANin kaava esim. = IBAN(A1)
muokkaa nyt solun A1 IBAN koodin
jos tarttet muunlaista ratkaisua niin onnistuu sekin...
esim.
syötöt soluun IBAn koodin ja enterillä tekee ton
hiiren oikealla?
tuplaklikkauksella muuttaa?
jne...
Keep EXCELing
@Kunde - Miksi noin monimutkaisesti, jos Excel auki kokoajan ja 00:00:00 tapahtuu makron suoritus?
yksi helppo keino olisi käyttää Windowsin omaa ajastettua toimintaa ja silloin Excel voi olla suljettuna kokoajan. Toki, jos pitää lukea dataa jostain kokoajan niin ei voi käyttää. Mutta jos esim. juuri, ennen makron suoritusta voidaan lukea dataa sisään silloin tekisin itse tällä, koska ei tartte Excelin olla auki resursseja viemässä.
siis START/ ADMINISTRATIVE TOOLS/ SHEDULE TASK ja siellä lisäät ton Excelin avaamisen ja Auto-Open tapahtumaan tarvittavat koodit ...
Keep EXCELing
@Kunde - eiköhän toukta peltierin sivuilta löydy tarvittava...
http://peltiertech.com/Excel/
Keep EXCELing
@Kunde - Älä vaivaa päätäsi tollasilla...
VBA koodit aukee ihan helposti oli sun mielessä mitä jippoja tahansa.
Mulla kokemusta koodaamisesta reilut 10 v ja eri ohjelmilla...
Tyydy vaan siihen salasanaasi. Ei sitä tavalliset käyttäjät saa auki ilman apuohjelmia.
Ja jos muuta jippoja on ja saavat auki, niin hakkeroija on sit parempi asiantuntija kuin sinä..
;-)
Keep EXCELing
@Kunde - Voin kyllä ilman testausta sanoa, että Mr.VBAn koodi ei toimi kuin kerran ja siis ja vain kun avataan tiedosto. Ja toimii silloinkin vain jos avauksessa solussa oleva aika on "tulevaisuudessa"
Toisaalta kysymyshän oli miten korvata F9 napin painallus, jos solussa aika muuttuu ja raja ylittyy
ihan piece of case, mutta katsotaan miten Mr.VBA ratkaisee hommat...
jos ei onnaa, niin ehkäpä Kunde auttaa...
muuten HYVÄÄ VAPPUA KAIKILLE etenkin mun foorumin lukijoille!
KEEP EXCELing
@Kunde - "Moi Kunde, ei mitään."
Aivan oikein! Ei tapahdu mitään
Aika = Range("A1").Value
jos oletuksena oli vaikka Taul1 ja siellä toi arvo haetaan, toimiii niin kauan oikein kun olet tallentanut EXCELin Taul1 ollessa aktiivinen. Jos sen sijaan tallennat esim. Taul2 ollessa aktiivinen, ei toimi koska A1 arvo luetaan aktiivisesta taulukosta ja todennäköisesti muissa taulukoissa ei ole tota aikaa A1:ssa
ymmärsitkö pointtini?
Keep EXCELing
@Kunde - jos tallennatkin jonkun muun kuin sun ajatuksissasi olleen taulukon ollessa aktiivinen, niin mitäs tapahtuu seuraavalla kerralla kun avaat ExCELin... ;-)
ei hjuva
Keep EXCELing
@Kunde - ei siinä tartte olla ominaisuuksissa LinkedCel kohdassa mitään
ihan sama mihin soluun viittaa ja tekee mitä haluu arvolla....
Private Sub ComboBox1_Change()
Range("A1") = Val(ComboBox1)
End Sub
Keep EXCELing
@Kunde - "Haluan, että värit kattavat tietyln skaalan, vaikka Labelien lukumäärä vaihtelee.. .."
;-)
Keep EXCELing
@Kunde - turhahan niiä sinne leikepäydälle on siirrellä ja kopioida takasin kun sen voi noin tehdä suoraan ilman leikepäytää, niinkuin koodisi nyt tekee,.
alla hiukan siitittynä toi sama makro . Siinä poistettu vaan turhia toimintoja ja oletusarvoja.
Sub Makro1()
' Makro1 Makro
Range("A65536").End(xlUp).Offset(1, 0).Resize(, 4) = Sheets("Taul1").Range("E7:H7").Value
End Sub
Keep EXCELing
@Kunde