Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Tietokonelistojen vertaaminen

olljanat [04.03.2009 21:30:22]

#

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
          kone7

Lista pitäisi saada näyttämään tältä:

AD        WSUS      Antivir     SMS
Kone1     Kone1     Kone1       Kone1
kone2               kone2
KONE3     KONE3
                    KONE4
          kone5
          kone7                 kone7

Lö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.

Grez [04.03.2009 23:47:21]

#

Pystyy tuon tekemään Excelin funktioillakin, mutta se ei välttämättä ole sen helpompaa kuin makron tekeminen.

olljanat [05.03.2009 00:06:10]

#

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?

neau33 [09.03.2009 14:49:22]

#

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 Sub

PS. mikäli sattuisit tarvitsemaan lisäapua, niin kerro ihmeessä hieman lisää mm. tavasta,
jolla tuot edellä esittämiäsi listauksia Exceliin jne...

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta