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
- Sub Siirry()
SendKeys "{Down}"
End Sub
@Kunde
Keep EXCELing - jos tekstit A-sarakkeessa
B1 soluun matriisikaava SHIFT+CTRL+ENTER (tekstit)
={TEXTJOIN("";TRUE;IF(ISERROR(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1)*1);MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1);""))}
C1 soluun matriisikaava SHIFT+CTRL+ENTER (numerot)
={TEXTJOIN("";TRUE;IFERROR((MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1)*1);""))}
Keep EXCELing
@Kunde - jos haluat koodin laita YV
https://www.dropbox.com/scl/fi/5m5zcscjfew5kbobb8sbz/Excel-rivit-sarakkeeseen.mp4 - Koodi toimii enkkuversiossa, mutta suomiversiossa pitää fiksata ...
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim lastAction As String
lastAction = Application.CommandBars("Standard").Controls("&Kumoa").List(1)
If Left(lastAction, 5) = "Liitä" Then
Application.EnableEvents = False
Application.Undo
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.EnableEvents = True
End If
End Su - aloituksessasi oli
A1 = 3/6/2023 3:44:23,000 PM eli pilkku erottimena
ja nyt sitten se on muuttunut pisteeksi...
Ei kai mun koodi voi toimia oikein jos kerran ekana annat dataan pilkun ja teen koodin sen ukaan , joka toimii ja nyt sitten se pitääkin olla piste ja ihmettelet kun koodi ei toimi
Koeta jo päättää mikä on oikea tuotavan datan muoto... - Linkit ovat se viho viimeisin keino, mutta jos ei osaa muuten kopioida, niin ei kai sitten väliä, kunhan jollakin keinolla saa toimivan ratkaisun aikaan...
- Specialcellsillä on joku solumäärärajoitus, mutta en nyt muista kuinka iso se on. Kerran se on tullut vastaan ohjelmassani.
Tee tuosta funktio-kaikkitarvittavat pelimerkithän siinä on. - Turhaa luuppaamista.
Oletetaan , että dataa olisi vaikka 1000 riviä ja suodatuksen tuloksena tulisi 10 riviä, jolloin ylläoleva koodi tekee 990 turhaa ja ylimmääräistä luuppia, toisin kuin alleoleva koodi tekee vain tarvittavat10 luuppia...
Sub LaskeUniikit()
Dim Solu As Range
Dim vika As Long
vika = Range("A65536").End(xlUp).Row
Dim uniikit As New Collection
Application.Volatile
On Error Resume Next
For Each Solu In Range(Range("A2:A" & vika).SpecialCells(xlVisible).Address)
uniikit.Add Solu, CStr(Solu)
Next
Range("C1") = uniikit.Count
End Sub
Keep EXCELing
@Kunde - Käsittely tehdään Excelissä. Data tulee leikepöydältä html-muodossa...
Kun olet noin taitava, kerro ihmeessä , miten se tehdään liitettäessä leikepöydältä - Mitä tarkoitat - Osaatko sanoa, miksi Excel ei reagoi muutettuun formatointiin?
- tavalliseen moduuliin...
Sub MuutaPäiväys()
Dim vika As Long
Dim solu As Range
Application.DisplayAlerts = False
On Error Resume Next
Sheets("Huuhaa").Delete
Sheets.Add.Name = "Huuhaa"
On Error GoTo 0
'muuta taulukon nimi jasarake sopivaksi nya A-sarake=1
vika = Worksheets("Taul1").Cells(Rows.Count, 1).End(xlUp).Row
'muuta taulukon nimi sopivaksi
For Each solu In Worksheets("Taul1").Range("A3:A" & vika)
Worksheets("huuhaa").Range(solu.Address).NumberFormat = "@"
'muuta taulukon nimi sopivaksi
Worksheets("huuhaa").Range(solu.Address).FormulaR1C1 = "=VALUE(Taul1!RC)"
Worksheets("huuhaa").Range(solu.Address).NumberFormat = "yyyy-mm-dd hh:mm:ss"
Next
Worksheets("huuhaa").Range("A3:A" & vika) = Worksheets("huuhaa").Range("A3:A" & vika).Value
'muuta taulukon nimi sopivaksi
Worksheets("huuhaa").Range("A3:A" & vika).Copy Worksheets("Taul1").Range("A3:A" & vika)
Sheets("Huuhaa").Delete
Application.DisplayAlerts = True
End Sub
Keep EXCELing
@Kunde - tavalliseen moduuliin...
Function TekeeMAC(ByVal MAC As String) As String
Dim i As Long
For i = Len(MAC) - 2 To 2 Step -2
MAC = Left(MAC, i) & ":" & Mid(MAC, i + 1)
Next
TekeeMAC = MAC
End Function
Voit käyttää funktiota solussa tyyliin =TekeeMAC(I4)
Keep EXCELing
@Kunde - Kuten sanoin, räätälöinti helppoa... ;-)
- Tuossa nyt tosi simppeli makro (oli käytössä videolinkissäni aiemmin)
soluhin E3 ja G3 syötetään tietoja ja vastaussolussa F4 summataan ne.
Vaihtaa vastaussolun väriä sen mukaan onko solussa kaava vai ei ja palauttaa originaali kaavan jos solun tyhjentää tai E3 tai G3 solujen arvo muuttuu.
Tosta nyt voi räätälöidä vaikka mitä pikku vaivalla... ;-)
koodi ko. taulukon moduuliin...
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Union(Range("E3"), Range("G3"))) Is Nothing Then
Range("F4").FormulaR1C1 = "=R[-1]C[-1] R[-1]C[1]"
Range("F4").Interior.Color = 5287936
End If
If Not Intersect(Target, Range("F4")) Is Nothing Then
If Target.HasFormula Then
Range("F4").Interior.Color = 5287936
Else
If Target = "" Then
Target.FormulaR1C1 = "=R[-1]C[-1] R[-1]C[1]"
Else
Range("F4").Interior.Color = 255
End If
End If
End If
End Sub
Keep EXCELing
@Kunde - Nuo makrothan toimii samoin kuin normikaavatkin eli voit jossitella yms ihan normitapaan, mutta EXCEL4 makrot pitää olla tehtynä nimiin tai sitten MacroSheetille.koko proseduuri
Kandee tsekata youtubesta missä ainakin tää hemmo niitä esittelee(useampikin video)
https://www.youtube.com/watch?v=b1S4UJsL62w - kokeile absoluutisella viittauksilla, nyt tsekkaa solua F5
=NOUDA.SOLU(48;!$F$5)
=NOUDA.SOLU(48;!F5) - Itsellä EXCEl 2021 ja siinä vaihdoin kielen suomeksi ja enkkuvesion rc ainakin piti muuttaa rs, jotta toimi suomiversiossa.
Kandee ekana kokeilla enkkuversiolla ja tallentaa ja sitten muuttaa kielen suomeksi ja testailee.
Dokumentaatio on vähissä, mutta 1990- luvulla noilla mentiin aika pitkällekin ;-)
Nykyäänhän noi samat voi tehdä VBA:lla
Funktiot ovat Excel 4 version makrofunktioita ja ne toimivat edelleen jopa uusimmissa versioissakin.
Tuolla linkin sivulla hiukan asiasta ja löytyy se latauslinkki manuaalinkin, sama minkä aiemmin jo olen postannut
https://exceloffthegrid.com/using-excel-4-macro-functions/ - Luulo ei ole tiedon väärti...
moduuliin funktio
Function OnkoKaava(Solu As Range) As Boolean
OnkoKaava = Solu.HasFormula
End Function
ja jos tsekataan esim. onko solussa D4 kaava
niin vastaussoluun kaava =OnkoKaava(D4)
Keep EXCELing
@Kunde - Käyttää enkkuversion funktionimiä suomiversiossa...
suomiversiossa viittaus =NOUDA.SOLU(48;SIIRTYMÄ(EPÄSUORA("rs";EPÄTOSI);0;-1))
Keep EXCELing
@Kunde - Katso linkittämäni video, siinä näet miten juurikin GET.CELL funktiota käytin tutkimaan, onko solussa kaava vai ei.
Kuten jo aiemmassa postauksessa mainitsin, pitää tietää miten noita funktioita käytetään. Toki VBA:lla voi aivan hyvin tehdä ton paljon yksinkertaisemmin (xxx.HasFormula), mutta noilla vanhoilla EXCEL4 funktioilla voi tehdä useita juttuja kätevästi ilman VBA:ta ja samallahan oppii käyttämään nimeämistä hyväkseen kaavoissa...i
Vika on tällä kertaa käyttäjässä ;-)
Keep EXCELing
@Kunde