我使用范围数据,并希望填充一个单元格,其中包含最小值和最大值之间设定的增量值。例如,最小外径为 1 1/16",最大外径为 1 11/32"。我想填充第三个单元格,其中包含每个端点以及介于两者之间的所有值,精度为 1/32 英寸:1 1/16";1 3/32";1 1/8";1 5/32";1 3/16";1 7/32";1 1/4";1 9/32";1 5/16";1 11/32"
我可以在 Excel 2007 中执行此操作吗?
到目前为止,我只是从一个主分号分隔列表中复制和粘贴 1 1/64 和 2" 之间的所有值,然后返回并复制并将“1”替换为“2”,然后将它们添加到字符串中,依此类推。
我刚刚尝试了 Madball73 的 VBA 代码。当且仅当每个限制的整数值相同并且我删除了“时,我才能让它生成值。例如,我尝试了 1 1/64 到 1 1/4(并将增量更改为 0.015625,因为这个是到第 64 位)。VBA 代码返回:“;1 1/64";1 1/32";1 3/64";1 1/16";1 5/64";1 3/32";1 7/64";1 1/8";1 9/64";1 5/32";1 11/64";1 3/16";1 13/64";1 7/32";1 15/64";1 1/4”
越来越近!
更新:好的,经过相当多的调整和添加最终的“通过连接和修剪前面的”;,我可以让它工作了。
更新 2:它似乎不再起作用了 :(
答案1
这是为您准备的自定义 VBA 函数。通过设置公式来使用它: =IterateSizes(value(a1),value(a2))
Function IterateSizes(btmSize, topSize)
rtnValue = ""
incr = 0.03125
For i = btmSize To topSize Step incr
fraction = Trim(Excel.WorksheetFunction.Text(i, "# ??/??"))
rtnValue = rtnValue & """;" & fraction
Next i
IterateSizes = rtnValue
End Function
注意。它很快就被拼凑起来,并适用于我给出的几个输入(不包括双引号)。但是,它没有经过全面测试,不能处理无效输入,没有进行边界测试等,但这是一个起点。
答案2
这里有一个更简单的非 VBA 选项 -在 Excel 中不使用 VBA 连接单元格区域
这些是关键步骤。点击该链接可查看图片、评论和其他技巧。
创建分隔符
如果我们可以使用字符来分隔值,那就太好了。方法如下:
- 选择单元格 B2。
- 在公式栏中输入 =A1:A50&", "。
- 编辑:根据您的区域设置,尝试以下操作:=TRANSPOSE(A1:A50)&", "
- 按 F9。
- 删除公式栏中的花括号。
- 删除最后一个分隔符。
- 在公式栏中的所有字符前输入 =Concatenate(。
- 在公式栏中的最后一个字符后输入)。
- 按 Enter 键
我经常这样做,我发现这个小小的修改更加方便(Office 2016):
- 如上所述,输入类似内容
=A1:A50&" "
然后按 F9 - 删除
={
开头的 和}
结尾的 ,然后按 Enter - 查找并将 (
ctrl-H
)替换";"
为"&"
- 添加
=
到单元格开头