我是vba的新手并且有一个问题,我希望有人可以帮助我,请解释每一步对我有什么把握理解。我想把它放在我在一个单元格中取一组值并将其粘贴到另一个单元格中的地方是这些是具有特定掩码的ip地址。比如说一个单元格有192.168.1.0/30,我希望它转到下一个工作表并自动将范围转换为192.168.1.0和192.168.1.1以下。我需要它来检测它是否是/ 29或/ 28并自动填充列,直到它达到该范围的地址量。也可能会出现这样的情况:
192.168.1.0/30 192.168.5.25 192.168.6.120/28,192.168.6.0/29
我希望它在下一张表中基本上是这样的
192.168.1.0 192.168.1.1 192.168.1.2 192.168.1.3 192.168.5.25 192.168.6.120 192.168.6.121 192.168.6.122 192.168.6.123 192.168.6.124 192.168.6.125 192.168.6.126 192.168.6.127 192.168.6.128 192.168.6.129 192.168.6.130 192.168.6.131 192.168.6.132 192.168.6.133 192.168.6.134 192.168.6.135 192.168.6.0 192.168.6.1 192.168.6.2 192.168.6.3 192.168.6.4 192.168.6.5 192.168.6.6 192.168.6.7
这将在另一张纸上的一列中。我想提前感谢你的帮助。
答案 0 :(得分:0)
试一试
Public Sub GenerateIPRange()
'Establishes variables for each section of an IP Address
Dim x1, x2, x3, x4lower, x4upper As Long
'Prompts the user for each section of the IP Address.
x1 = InputBox("Enter a value for X: XXX.1.1.1", "Enter a value", "192")
x2 = InputBox("Enter a value for X: 1.XXX.1.1", "Enter a value", "168")
x3 = InputBox("Enter a value for X: 1.1.XXX.1", "Enter a value", "1")
x4lower = InputBox("Enter lowest value for X: 1.1.1.XXX", "Enter a value", "1")
x4upper = InputBox("Enter highest value for X: 1.1.1.XXX", "Enter a value", "10")
With Worksheets.Add 'Creates a new worksheet and continues to work with this new worksheet
.Name = x1 & "." & x2 & "." & x3 'Renames the new worksheet to the first 3 digits of the IP
Dim counter As Long 'A counter for sequencing cells
counter = 1 'Starting at cell 1
Do Until x4lower > x4upper 'A loop through all numbers requested from user
.Cells(counter, 1) = x1 & "." & x2 & "." & x3 & "." & x4lower 'Enters the value into cell
x4lower = x4lower + 1 'Increment the last digits of the IP
counter = counter + 1 'Increment the cell counter (move down a cell)
Loop 'Begin loop again if necessary
End With 'Stop working with the new worksheet
End Sub
答案 1 :(得分:0)
因此,假设格式始终相同,这是可能的并且非常简单。
我假设在你的第一个单元格(1,1)中,即A1是值的开头,如果不是这样,它会继续向下移动每个新值,然后代码将无效。但是,如果不是这种情况,仍然可以找到解决方案,您只需要能够提供更详细的例子来说明。
将下面的代码放入电子表格中的新模块中应该可以处理
Sub Help()
a = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
rowpos = 1
For i = 1 To a
x1 = Mid(Sheet1.Cells(i, 1), 1, 3)
x2 = Mid(Sheet1.Cells(i, 1), 5, 3)
x3 = Mid(Sheet1.Cells(i, 1), 9, 1)
x4 = Mid(Sheet1.Cells(i, 1), 13, 2)
For j = 1 To x4
Sheet2.Cells(rowpos, 1).Value = x1 & "." & x2 & "." & x3 & "." & j
rowpos = rowpos + 1
Next j
Next i
End Sub
与上述类似的东西应该完全自动化您的解决方案。如果这对你的例子不起作用,我总是愿意提供更多的帮助,但是如果可以的话,我可以随意查看我使用过的函数。
注意 - 这假设每个ip的掩码数总是一个两位数值,因为不少于10不超过99
的Darren