Terve
Jos minulla on useasta eri järjestelmästä otettuja konelistoja (esim. ad, wsus, antivir järjestelmä, sms, etc...). Mikä olisi paras tapa verrata näitä keskenään, jotta näkisin miten ne eroavat toisistaan?
Saan tuotua nuo listat esim exceliin, sortattua ne ja poistettua dublikaatit (jos sellasia on), mutta kirjainkoko nimissä voi vaihdella.
Esimerkki lista:
AD WSUS Antivir SMS
Kone1 Kone1 Kone1 Kone1
kone2 KONE3 kone2 kone7
KONE3 kone5 KONE4
kone7Lista pitäisi saada näyttämään tältä:
AD WSUS Antivir SMS
Kone1 Kone1 Kone1 Kone1
kone2 kone2
KONE3 KONE3
KONE4
kone5
kone7 kone7Löytyykö excelistä valmiit toiminnot tähän vai pitääkö rakennella macro?
Ja jos pitää niin miten tässä kannattaisi lähteä etenemään?
Jos se helpottaa niin kaiken tekstin voi muuttaa pienellä kirjoitetuksi.
Pystyy tuon tekemään Excelin funktioillakin, mutta se ei välttämättä ole sen helpompaa kuin makron tekeminen.
Osaatko sanoa millä funktioilla vois onnistua?
Tai miten tuo macro tulisi rakentaa, että se toimisi kuvatulla tavalla?
Eli mitä verrataan ja mihin, että toimii oikein?
Heippa olljanat!
Jos kirjainkoon vaihtelu aiheuttaa ongelmia vertailussa niin tästä on hyvä alkaa...
'Module1
Global kirjoitaa As Boolean
Sub auto_load()
' tämä aliohjelma suoritetaan automaattisesti aina,
' kun työkirja avataan mikäli makrojen suorittaminen
' on asetuksissa sallittuna...
ReWriteCellValues
End Sub
Public Sub ReWriteCellValues()
' tämä aliohjelma muuttaa työkirjan kaikkien taulujen
' sellaisten solujen, jotka sisältävät arvon (eivät kaavaa)
' alkamaan isolla- ja jatkumaan pienellä kirjaimella...
'
' tähän aliohjelmaan voi myös viitata suoraan makrosta,
' jolla suoritetaan vertailu ja mahd. solujen muokkaus...
If kirjoittaa Then Exit Sub
kirjoittaa = True
Dim solu, sh
Application.ScreenUpdating = False
For Each sh In ActiveWorkbook.Sheets
sh.Activate
ActiveSheet.UsedRange.Select
For Each solu In Selection
If InStr(CStr(solu.Value), "=") = 0 Then
If Trim(solu.Value) <> "" Then
Select Case Len(solu.Value)
Case 1
solu.Value = UCase(solu.Value)
Case Is > 1
Dim alku, loppu
alku = UCase(Left(solu.Value, 1))
loppu = LCase(Right(solu.Value, Len(solu.Value) - 1))
solu.Value = alku & loppu
End Select
End If
End If
Next
Next
Sheets(1).Activate
Cells(1, 1).Select
Application.ScreenUpdating = True
kirjoittaa = False
End SubPS. mikäli sattuisit tarvitsemaan lisäapua, niin kerro ihmeessä hieman lisää mm. tavasta,
jolla tuot edellä esittämiäsi listauksia Exceliin jne...
Aihe on jo aika vanha, joten et voi enää vastata siihen.