foreach($line in ((Import-Csv -Delimiter "," -Path C:\test\eetest.csv -Header @("Scope","Start IP Address","End IP Address")) | Select-Object -Skip 1)) {
Write-Output "$($line.Scope.Split(" ")[1]) $($line.Scope.Split(" ")[2]): $($line."End IP Address".Split(".")[3] - $line."Start IP Address".Split(".")[3]) IP Addresses"
}
Not quite a one liner, but, close.
Scope,Start IP Address,End IP Address
[12.182.1.0] SITE 1,12.182.1.11,12.182.1.30
[12.182.8.0] SITE 2,12.182.8.130,12.182.8.254
Create a folder on your machine named C:\test and save the file into this folder. As written the following should work:foreach($line in ((Import-Csv -Delimiter "," -Path C:\test\eetest.csv -Header @("Scope","Start IP Address","End IP Address")) | Select-Object -Skip 1)) {
Write-Output "$($line.Scope.Split(" ")[1]) $($line.Scope.Split(" ")[2]): $($line."End IP Address".Split(".")[3] - $line."Start IP Address".Split(".")[3]) IP Addresses"
}
redmondb in sheet PC's, in sheet PC's you set "Match" please
=MID(B2,1,FIND(".",B2,1)-1)*2 ^ 24
+MID(B2,FIND("#",SUBSTITUTE(B2,".","#",1),1)+1,FIND("#",SUBSTITUTE(B2,".","#",2),1)-FIND("#",SUBSTITUTE(B2,".","#",1),1)-1)*2 ^ 16
+MID(B2,FIND("#",SUBSTITUTE(B2,".","#",2),1)+1,FIND("#",SUBSTITUTE(B2,".","#",3),1)-FIND("#",SUBSTITUTE(B2,".","#",2),1)-1)*2 ^ 8
+MID(B2,FIND("#",SUBSTITUTE(B2,".","#",3),1)+1,9999)*1
The first line extracts the start of the IP address, up to but excluding the first full-stop. It then multiplies this by 2^24 (= 16,777,216). Option Explicit
Sub Drop_Formulas()
Sheets("Sites").Activate
Columns("D:G").Copy
Columns("D:G").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Sheets("PC's").Activate
Columns("C:E").Copy
Columns("C:E").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Sheets("Sites").Activate
Application.CutCopyMode = False
End Sub
Regards,Option Explicit
Sub Refresh_PCs()
Dim xWork As Workbook
Dim xPCs As Worksheet
Dim xSites As Worksheet
Dim xLast_PC As Long
Dim xLast_Site As Long
Dim xresponse As Long
Dim xCSV As String
xresponse = MsgBox("Refreshing all data by loading a new PC-Name file..." & Chr(10) & Chr(10) & " - The ""PC's"" sheet will be deleted." & Chr(10) _
& " - The ""Sites"" sheet's columns, other than A:C, will be deleted or moved." & Chr(10) & Chr(10) _
& "Do you wish to continue?", vbOKCancel, "Refresh_PCs")
If xresponse = 2 Then
MsgBox ("User selected Cancel. Nothing has been changed in the file.")
Exit Sub
End If
ThisWorkbook.Activate
' Get the CSV file's name and location...
xCSV = Application.GetOpenFilename(filefilter:="CSV Files, *.CSV", MultiSelect:=False)
If xCSV = "False" Then
MsgBox ("User did not select a file - run cancelled. Nothing has been changed in the file.")
Exit Sub
End If
Application.ScreenUpdating = False
' Delete an existing "PC's"...
On Error Resume Next
Application.DisplayAlerts = False
Sheets("PC's").delete
Application.DisplayAlerts = True
On Error GoTo 0
' Import the CSV
Set xWork = Workbooks.Open(xCSV)
xWork.ActiveSheet.Name = "PC's"
xWork.ActiveSheet.Move Before:=ThisWorkbook.Sheets("Sites")
' Some useful items...
Set xPCs = Sheets("PC's")
Set xSites = Sheets("Sites")
xLast_PC = xPCs.Range("A1").SpecialCells(xlLastCell).Row
xLast_Site = xSites.Range("A1").SpecialCells(xlLastCell).Row
xSites.Range("D:G").delete
xSites.Range("D:G").insert
' Setup PC Formulas...
Range("c2").FormulaR1C1 = "=MID(RC[-1],1,FIND(""."",RC[-1],1)-1)*2 ^ 24" & Chr(10) _
& "+MID(RC[-1],FIND(""#"",SUBSTITUTE(RC[-1],""."",""#"",1),1)+1,FIND(""#"",SUBSTITUTE(RC[-1],""."",""#"",2),1)-FIND(""#"",SUBSTITUTE(RC[-1],""."",""#"",1),1)-1)*2 ^ 16" & Chr(10) _
& "+MID(RC[-1],FIND(""#"",SUBSTITUTE(RC[-1],""."",""#"",2),1)+1,FIND(""#"",SUBSTITUTE(RC[-1],""."",""#"",3),1)-FIND(""#"",SUBSTITUTE(RC[-1],""."",""#"",2),1)-1)*2 ^ 8" & Chr(10) _
& "+MID(RC[-1],FIND(""#"",SUBSTITUTE(RC[-1],""."",""#"",3),1)+1,9999)*1"
Range("D2").FormulaR1C1 = "=IFERROR(MATCH(RC[-1],Sites!R2C4:R" & xLast_Site & "C4,1),""N/A"")"
Range("E2").FormulaR1C1 = "=IF(RC[-1]=""N/A"",""N/A"",IF(AND(RC[-2]>=INDEX(Sites!R2C4:R" & xLast_Site & "C4,RC[-1]),RC[-2]<=INDEX(Sites!R2C5:R" & xLast_Site & "C5,RC[-1])),INDEX(Sites!R2C7:R" & xLast_Site & "C7,RC[-1]),""N/A""))"
Range("C2:E2").Copy Destination:=Range("C2:E" & xLast_PC)
' Setup Site Formulas...
xSites.Activate
If xSites.AutoFilterMode = True Then xSites.AutoFilterMode = False
Range("D2").FormulaR1C1 = "=MID(RC[-2],1,FIND(""."",RC[-2],1)-1)*2 ^ 24" & Chr(10) _
& "+MID(RC[-2],FIND(""#"",SUBSTITUTE(RC[-2],""."",""#"",1),1)+1,FIND(""#"",SUBSTITUTE(RC[-2],""."",""#"",2),1)-FIND(""#"",SUBSTITUTE(RC[-2],""."",""#"",1),1)-1)*2 ^ 16" & Chr(10) _
& "+MID(RC[-2],FIND(""#"",SUBSTITUTE(RC[-2],""."",""#"",2),1)+1,FIND(""#"",SUBSTITUTE(RC[-2],""."",""#"",3),1)-FIND(""#"",SUBSTITUTE(RC[-2],""."",""#"",2),1)-1)*2 ^ 8" & Chr(10) _
& "+MID(RC[-2],FIND(""#"",SUBSTITUTE(RC[-2],""."",""#"",3),1)+1,9999)*1"
Range("E2").FormulaR1C1 = "=MID(RC[-2],1,FIND(""."",RC[-2],1)-1)*2 ^ 24" & Chr(10) _
& "+MID(RC[-2],FIND(""#"",SUBSTITUTE(RC[-2],""."",""#"",1),1)+1,FIND(""#"",SUBSTITUTE(RC[-2],""."",""#"",2),1)-FIND(""#"",SUBSTITUTE(RC[-2],""."",""#"",1),1)-1)*2 ^ 16" & Chr(10) _
& "+MID(RC[-2],FIND(""#"",SUBSTITUTE(RC[-2],""."",""#"",2),1)+1,FIND(""#"",SUBSTITUTE(RC[-2],""."",""#"",3),1)-FIND(""#"",SUBSTITUTE(RC[-2],""."",""#"",2),1)-1)*2 ^ 8" & Chr(10) _
& "+MID(RC[-2],FIND(""#"",SUBSTITUTE(RC[-2],""."",""#"",3),1)+1,9999)*1"
Range("F2").FormulaR1C1 = "=SUMPRODUCT(1*('PC''s'!R2C3:R" & xLast_PC & "C3>=RC[-2]),1*('PC''s'!R2C3:R" & xLast_PC & "C3<=RC[-1]))"
Range("G2").FormulaR1C1 = "=IFERROR(TRIM(MID(RC[-6],FIND(""]"",RC[-6],1)+1,9999)),RC[-6])"
Range("D2:G2").Copy Destination:=Range("D2:G" & xLast_Site)
' Setup Site Header...
Range("D1:G1").Value = Array("Start No.", "End No.", "No. of PC's", "Site")
With Range("D1:G1").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.249977111117893
.PatternTintAndShade = 0
End With
Range("D1:G1").Font.Bold = True
Columns("A:G").EntireColumn.AutoFit
Range("A2").Select
ActiveWindow.FreezePanes = True
' Setup PC Header...
xPCs.Activate
Range("C1:E1").Value = Array("Work", "Match", "Site")
With Range("A1:E1").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.249977111117893
.PatternTintAndShade = 0
End With
Range("A1:E1").Font.Bold = True
Columns("A:E").EntireColumn.AutoFit
Range("A2").Select
ActiveWindow.FreezePanes = True
'Drop Formulas and work columns...
Call Drop_Formulas
xPCs.Columns("C:D").delete Shift:=xlToLeft
xSites.Columns("D:E").delete Shift:=xlToLeft
' Finished...
Application.ScreenUpdating = True
MsgBox ("Refresh complete. Please save the file.")
End Sub
Sub Drop_Formulas()
Sheets("Sites").Activate
Columns("D:G").Copy
Columns("D:G").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Sheets("PC's").Activate
Columns("C:E").Copy
Columns("C:E").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A2").Select
Sheets("Sites").Activate
Application.CutCopyMode = False
End Sub
Regards,
You mention a script, but it can simply be done with formulas. Please see the attached.
Regards,
Brian.