我创建了我的第一个UDF。它将在其左侧的单元格中引用IP地址,然后使用Vlookup查找该IP地址的主机名。它看起来像这样:
MapIPtoHost = Application.WorksheetFunction.VLookup(ActiveCell.Offset(0, -1).Value, Range("D2:E3"), 2, False)
要测试此UDF,D2:E3中的表数组只有2行,如下所示......
1.2.3.4 1234.somewhere.com
5.6.7.8 5678.elsewhere.com
...此工作表的单元格A1到A6具有以下IP地址:
1.2.3.4
5.6.7.8
1.2.3.4
5.6.7.8
1.2.3.4
5.6.7.8
非常简单,对吧?
如果我在单元格B1中输入公式“= MapIPtoHost()”,我会按预期获得“1234.somewhere.com”。
1.2.3.4 1234.somewhere.com
同样,如果我在单元格B2中输入公式,我会得到“5678.elsewhere.com”。
5.6.7.8 5678.elsewhere.com
所以,IT工作。耶队!
但是 - 这就是奇怪......
如果不是单独在每个B单元格中输入“= MapIPtoHost()”,而是将其仅放在B1中,然后将填充句柄向下拖动到B6,它的行为与上面不同。现在每个B单元都有相同的主机名,就像这样......
1.2.3.4 1234.somewhere.com
5.6.7.8 1234.somewhere.com
1.2.3.4 1234.somewhere.com
5.6.7.8 1234.somewhere.com
1.2.3.4 1234.somewhere.com
5.6.7.8 1234.somewhere.com
我猜这是UDF的怪癖(特征?)?有人可以帮助这个新手理解为什么UDF和AutoFill似乎没有相处吗?