<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>https://wiki.espai.de/index.php?action=history&amp;feed=atom&amp;title=Excel_VBA_Examples</id>
	<title>Excel VBA Examples - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.espai.de/index.php?action=history&amp;feed=atom&amp;title=Excel_VBA_Examples"/>
	<link rel="alternate" type="text/html" href="https://wiki.espai.de/index.php?title=Excel_VBA_Examples&amp;action=history"/>
	<updated>2026-05-27T17:39:22Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.espai.de/index.php?title=Excel_VBA_Examples&amp;diff=1149&amp;oldid=prev</id>
		<title>Marti: Es crea la pàgina amb «&lt;syntaxhighlight lang=&quot;vb&quot;&gt; Public Sub compareTables()      '    For i = 1 To 917 '        str1 = Sheets(1).Cells(i, 1) '        str1b = Trim(Left(str1, InStr(str1, &quot; &quot;) ...».</title>
		<link rel="alternate" type="text/html" href="https://wiki.espai.de/index.php?title=Excel_VBA_Examples&amp;diff=1149&amp;oldid=prev"/>
		<updated>2013-02-20T18:16:01Z</updated>

		<summary type="html">&lt;p&gt;Es crea la pàgina amb «&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot;&amp;gt; Public Sub compareTables()      &amp;#039;    For i = 1 To 917 &amp;#039;        str1 = Sheets(1).Cells(i, 1) &amp;#039;        str1b = Trim(Left(str1, InStr(str1, &amp;quot; &amp;quot;) ...».&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
Public Sub compareTables()&lt;br /&gt;
    &lt;br /&gt;
'    For i = 1 To 917&lt;br /&gt;
'        str1 = Sheets(1).Cells(i, 1)&lt;br /&gt;
'        str1b = Trim(Left(str1, InStr(str1, &amp;quot; &amp;quot;) - 1))&lt;br /&gt;
'&lt;br /&gt;
'        For j = 1 To 964&lt;br /&gt;
'            str2 = Trim(Sheets(2).Cells(j, 7))&lt;br /&gt;
'            If Left(str2, Len(str1b)) = str1b Or Left(str1b, Len(str2)) = str2 Then&lt;br /&gt;
'                Sheets(1).Cells(i, 6) = Sheets(2).Cells(j, 6)&lt;br /&gt;
'            End If&lt;br /&gt;
'        Next j&lt;br /&gt;
'    Next i&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
    Dim varSheetA As Variant&lt;br /&gt;
    Dim varSheetB As Variant&lt;br /&gt;
    Dim strRangeToCheck As String&lt;br /&gt;
    Dim iRow As Long&lt;br /&gt;
    Dim iCol As Long&lt;br /&gt;
    Dim iRowB As Long&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    'strRangeToCheck = &amp;quot;A1:IV65536&amp;quot;&lt;br /&gt;
    strRangeToCheck = &amp;quot;A1:Z1000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    'Loading the whole table into memory to speed up the comparition process. Excel takes a lot of time if comparing cell by cell!:&lt;br /&gt;
    'Debug.Print Now&lt;br /&gt;
    varSheetA = Worksheets(&amp;quot;Postgres&amp;quot;).Range(strRangeToCheck)&lt;br /&gt;
    varSheetB = Worksheets(&amp;quot;ITSM&amp;quot;).Range(strRangeToCheck)&lt;br /&gt;
    'Debug.Print Now&lt;br /&gt;
    &lt;br /&gt;
    For iRow = LBound(varSheetA, 1) To UBound(varSheetA, 1)&lt;br /&gt;
&lt;br /&gt;
        'We search for the Row number containing the same SN on the second table:&lt;br /&gt;
        Found = False&lt;br /&gt;
        For iRowB = LBound(varSheetB, 1) To UBound(varSheetB, 1)&lt;br /&gt;
            'Debug.Print LBound(varSheetB, 1); &amp;quot; &amp;quot;; UBound(varSheetB, 1)&lt;br /&gt;
            'Debug.Print iRow; &amp;quot;: &amp;quot;; varSheetA(iRow, 4); &amp;quot; - &amp;quot;; iRowB; &amp;quot;: &amp;quot;; varSheetB(iRowB, 4)&lt;br /&gt;
            If Trim(varSheetA(iRow, 4)) = Trim(varSheetB(iRowB, 4)) Then&lt;br /&gt;
                Found = True&lt;br /&gt;
                Exit For&lt;br /&gt;
            End If&lt;br /&gt;
        Next iRowB&lt;br /&gt;
        &lt;br /&gt;
        If Found Then 'If the SN is found on the second table&lt;br /&gt;
            &lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
            'Use&lt;br /&gt;
            Call result(iRow, 1, Trim(varSheetA(iRow, 1)) = Trim(varSheetB(iRowB, 1)), _&lt;br /&gt;
                                FlexibleUse(varSheetA(iRow, 1)) = FlexibleUse(varSheetB(iRowB, 1)))&lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
            'Manufacturer&lt;br /&gt;
            Call result(iRow, 2, Trim(varSheetA(iRow, 2)) = Trim(varSheetB(iRowB, 2)), _&lt;br /&gt;
                                Flexible(varSheetA(iRow, 2)) = Flexible(varSheetB(iRowB, 2)))&lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
            'Model&lt;br /&gt;
            Call result(iRow, 3, Trim(varSheetA(iRow, 3)) = Trim(varSheetB(iRowB, 3)), _&lt;br /&gt;
                                Flexible(varSheetA(iRow, 3)) = Flexible(varSheetB(iRowB, 3)))&lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
            'SN#&lt;br /&gt;
            ' If varSheetA(iRow, 4) = varSheetB(iRowB, 4) Then Worksheets(&amp;quot;Postgres&amp;quot;).Cells(iRow, 4).Interior.ColorIndex = 4&lt;br /&gt;
            Call result(iRow, 4, Trim(varSheetA(iRow, 4)) = Trim(varSheetB(iRowB, 4)))&lt;br /&gt;
            &lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
            'Position /room&lt;br /&gt;
            Call result(iRow, 5, InStr(varSheetB(iRowB, 5), ExtractElement(varSheetA(iRow, 5), 1)) &amp;gt; 0 And _&lt;br /&gt;
                                 InStr(varSheetB(iRowB, 5), ExtractElement(varSheetA(iRow, 5), 2)) &amp;gt; 0, _&lt;br /&gt;
                                 InStr(Flexible(varSheetB(iRowB, 5)), Flexible(ExtractElement(varSheetA(iRow, 5), 1))) &amp;gt; 0 And _&lt;br /&gt;
                                 InStr(Flexible(varSheetB(iRowB, 5)), Flexible(ExtractElement(varSheetA(iRow, 5), 2))) &amp;gt; 0)&lt;br /&gt;
                                 &lt;br /&gt;
            'Debug.Print ExtractElement(varSheetA(iRow, 5), 1); ExtractElement(varSheetA(iRow, 5), 2)&lt;br /&gt;
            'Debug.Print varSheetB(iRowB, 5); &amp;quot;¦¦¦¦¦¦&amp;quot;; ExtractElement(varSheetA(iRow, 5), 1); &amp;quot;¦¦¦¦¦¦&amp;quot;; ExtractElement(varSheetA(iRow, 5), 2); &amp;quot;¦¦¦¦¦¦&amp;quot;&lt;br /&gt;
            &lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
            'Site&lt;br /&gt;
            Call result(iRow, 6, InStr(varSheetA(iRow, 6), ExtractElement(varSheetB(iRowB, 6), 1)) &amp;gt; 0)&lt;br /&gt;
            &lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
            'Hostname&lt;br /&gt;
            Call result(iRow, 7, Trim(varSheetA(iRow, 7)) = Trim(varSheetB(iRowB, 7)))&lt;br /&gt;
            &lt;br /&gt;
            &lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
            'IP&lt;br /&gt;
            Call result(iRow, 8, Trim(varSheetA(iRow, 8)) = Trim(varSheetB(iRowB, 8)), _&lt;br /&gt;
                                InStr(varSheetB(iRowB, 8), ExtractElement(varSheetA(iRow, 8), 1)) &amp;gt; 0)&lt;br /&gt;
            &lt;br /&gt;
            &lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
            'Domain&lt;br /&gt;
            Call result(iRow, 9, Trim(varSheetA(iRow, 9)) = Trim(varSheetB(iRowB, 9)), _&lt;br /&gt;
                                InStr(FlexibleDomain(varSheetB(iRowB, 9)), FlexibleDomain(ExtractElement(varSheetA(iRow, 9), 1))) &amp;gt; 0)&lt;br /&gt;
            &lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
            'RAM&lt;br /&gt;
             Call result(iRow, 10, Trim(varSheetA(iRow, 10)) = Trim(varSheetB(iRowB, 10)), _&lt;br /&gt;
                                FlexibleRAM(varSheetB(iRowB, 10)) = Trim(varSheetA(iRow, 10)) Or _&lt;br /&gt;
                                Trim(varSheetB(iRowB, 10)) = FlexibleRAM(varSheetA(iRow, 10)))&lt;br /&gt;
            'Debug.Print Trim(varSheetB(iRowB, 10)), FlexibleRAM(varSheetA(iRow, 10))&lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
            'Disk&lt;br /&gt;
            Call result(iRow, 11, Trim(varSheetA(iRow, 11)) = Trim(varSheetB(iRowB, 11)), _&lt;br /&gt;
                                FlexibleRAM(varSheetB(iRowB, 11)) = Trim(varSheetA(iRow, 11)) Or _&lt;br /&gt;
                                Trim(varSheetB(iRowB, 11)) = FlexibleRAM(varSheetA(iRow, 11)))&lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
            'OS&lt;br /&gt;
            Call result(iRow, 12, InStr(varSheetA(iRow, 12), varSheetB(iRowB, 12)) &amp;gt; 0 And _&lt;br /&gt;
                                  InStr(varSheetA(iRow, 12), varSheetB(iRowB, 13)) &amp;gt; 0, _&lt;br /&gt;
                                    InStr(FlexibleOS(varSheetA(iRow, 12)), FlexibleOS(varSheetB(iRowB, 12))) &amp;gt; 0)&lt;br /&gt;
            &lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
            'IsVirtual&lt;br /&gt;
            Call result(iRow, 14, Trim(varSheetA(iRow, 14)) = Trim(varSheetB(iRowB, 14)), _&lt;br /&gt;
                                FlexibleVirtual(varSheetA(iRow, 14)) = FlexibleVirtual(varSheetB(iRowB, 14)))&lt;br /&gt;
                                &lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
            'Contract&lt;br /&gt;
            Call result(iRow, 15, Trim(varSheetA(iRow, 15)) = Trim(varSheetB(iRowB, 15)))&lt;br /&gt;
            &lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
            &lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
                       &lt;br /&gt;
            '#######################################################################################################&lt;br /&gt;
&lt;br /&gt;
        End If&lt;br /&gt;
    Next iRow&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'#######################################################################################################&lt;br /&gt;
'#######################################################################################################&lt;br /&gt;
'#######################################################################################################&lt;br /&gt;
'Support functions:&lt;br /&gt;
'#######################################################################################################&lt;br /&gt;
&lt;br /&gt;
'Painting the background of the cell&lt;br /&gt;
Public Sub result(iRow, iCol, result As Boolean, Optional Flexible As Boolean = False)&lt;br /&gt;
    If result Then&lt;br /&gt;
        Sheets(1).Cells(iRow, iCol).Interior.ColorIndex = 4 'green&lt;br /&gt;
    Else&lt;br /&gt;
        If Not Flexible Then&lt;br /&gt;
            Sheets(1).Cells(iRow, iCol).Interior.ColorIndex = 3 'red&lt;br /&gt;
        Else&lt;br /&gt;
            Sheets(1).Cells(iRow, iCol).Interior.ColorIndex = 6 'yellow&lt;br /&gt;
        End If&lt;br /&gt;
    End If&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
'#######################################################################################################&lt;br /&gt;
'Public Function FindFirstInstance(WHAT_TO_FIND As String) As Integer&lt;br /&gt;
''Const WHAT_TO_FIND As String = &amp;quot;test2&amp;quot;&lt;br /&gt;
'Dim ws As Excel.Worksheet&lt;br /&gt;
'Dim FoundCell As Excel.Range '&lt;br /&gt;
&lt;br /&gt;
'Set ws = ActiveSheet&lt;br /&gt;
'Set FoundCell = ws.Range(&amp;quot;A:A&amp;quot;).Find(what:=WHAT_TO_FIND, lookat:=xlWhole)&lt;br /&gt;
'If Not FoundCell Is Nothing Then&lt;br /&gt;
'    FindFirstInstance = FoundCell.Row&lt;br /&gt;
'Else&lt;br /&gt;
'    FindFirstInstance = 0&lt;br /&gt;
'End If&lt;br /&gt;
'End Function&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'#######################################################################################################&lt;br /&gt;
Function Flexible(ByVal str)&lt;br /&gt;
    str = UCase(str)&lt;br /&gt;
    str = Replace(str, &amp;quot;D0&amp;quot;, &amp;quot;D&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;R0&amp;quot;, &amp;quot;R&amp;quot;)&lt;br /&gt;
    Flexible = str&lt;br /&gt;
&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
'#######################################################################################################&lt;br /&gt;
Function FlexibleUse(ByVal str)&lt;br /&gt;
    str = UCase(str)&lt;br /&gt;
    str = Replace(str, &amp;quot;DEPLOYED&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;DOWN&amp;quot;, &amp;quot;2&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;DELETE&amp;quot;, &amp;quot;2&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;IN INVENTORY&amp;quot;, &amp;quot;2&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;OPERATIVE&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;DEVELOPMENT&amp;quot;, &amp;quot;1&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;SPARE ALLOCATED&amp;quot;, &amp;quot;2&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;SPARE&amp;quot;, &amp;quot;2&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    FlexibleUse = str&lt;br /&gt;
&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'#######################################################################################################&lt;br /&gt;
Function FlexibleDomain(ByVal str)&lt;br /&gt;
    str = UCase(str)&lt;br /&gt;
    str = Replace(str, &amp;quot;    &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;   &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;  &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    FlexibleDomain = str&lt;br /&gt;
&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
'#######################################################################################################&lt;br /&gt;
Function FlexibleRAM(ByVal str)&lt;br /&gt;
    str = 1024 * Val(str)&lt;br /&gt;
    FlexibleRAM = Trim(str)&lt;br /&gt;
&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
'#######################################################################################################&lt;br /&gt;
Function FlexibleOS(ByVal str)&lt;br /&gt;
    str = UCase(str)&lt;br /&gt;
    str = Replace(str, &amp;quot;LINUX&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;    &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;   &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;  &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    FlexibleOS = str&lt;br /&gt;
&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'#######################################################################################################&lt;br /&gt;
Function FlexibleVirtual(ByVal str)&lt;br /&gt;
    str = UCase(str)&lt;br /&gt;
    str = Replace(str, &amp;quot;&amp;quot;&amp;quot;PHISICAL_COMPUTER&amp;quot;&amp;quot;&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;    &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;   &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;  &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot; &amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    FlexibleVirtual = str&lt;br /&gt;
&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
'#######################################################################################################&lt;br /&gt;
Function ExtractElement(ByVal str, ByVal n)&lt;br /&gt;
'   Returns the n-th element from a string using different separators&lt;br /&gt;
&lt;br /&gt;
    Dim x As Variant&lt;br /&gt;
    &lt;br /&gt;
    If Left(str, 3) = &amp;quot;11-&amp;quot; Then&lt;br /&gt;
        str = Mid(str, 4)&lt;br /&gt;
        'Debug.Print str&lt;br /&gt;
    End If&lt;br /&gt;
    'str = Replace(str, &amp;quot;11-&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    str = Replace(str, &amp;quot;;&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;-&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;\n&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;\t&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;     &amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;    &amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;   &amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
    str = Replace(str, &amp;quot;  &amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    str = Trim(str)&lt;br /&gt;
    x = Split(str, &amp;quot; &amp;quot;)&lt;br /&gt;
    If n &amp;gt; 0 And n - 1 &amp;lt;= UBound(x) Then&lt;br /&gt;
       ExtractElement = x(n - 1)&lt;br /&gt;
    Else&lt;br /&gt;
        ExtractElement = &amp;quot;&amp;quot;&lt;br /&gt;
    End If&lt;br /&gt;
End Function&lt;br /&gt;
'#######################################################################################################&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Marti</name></author>
	</entry>
</feed>