Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel Vba:如何将数字范围转换为数字序列_Excel_Vba - Fatal编程技术网

Excel Vba:如何将数字范围转换为数字序列

Excel Vba:如何将数字范围转换为数字序列,excel,vba,Excel,Vba,我必须将单元格中的数字范围转换为列中的数字序列,如下所示: 10&-2&&-5&-8 10 12 13 14 15 18 我对此一无所知。请帮忙给我一些想法。 非常感谢。假设四部分字符串的解决方案 假设您有一个始终由四个部分组成的固定模式,并且字符串由“-”分隔,我使用Split函数和用户定义的helper函数推导了以下逻辑: (i) 第一个数字(=字符串“10&”中的绝对10) (ii)序列的起始编号(=从增量2到第一个编号=10+2=12) (iii)序列的结束编号(=第一个编号的增

我必须将单元格中的数字范围转换为列中的数字序列,如下所示:

10&-2&&-5&-8

10
12
13
14
15
18  
我对此一无所知。请帮忙给我一些想法。
非常感谢。

假设四部分字符串的解决方案

假设您有一个始终由四个部分组成的固定模式,并且字符串由
“-”
分隔,我使用
Split
函数和用户定义的helper函数推导了以下逻辑:

  • (i) 第一个数字(=字符串“10&”中的绝对10)
  • (ii)序列的起始编号(=从增量2到第一个编号=10+2=12)
  • (iii)序列的结束编号(=第一个编号的增量5=10+5=15)
  • (iv)最后一个数字(=增加8到第一个数字=10+8=18)
示例代码

下面的代码将有点奇怪的字符串“10&-2&&-5&-8”分成四部分,计算主数字,将定义的序列(包括第一个和最后一个元素)分配给数组,并将值写回列

Sub WriteSequence()
  Dim s As String, i As Integer, ii As Integer
  Dim first As Long, last As Long, start As Long
  Dim vParts, v      ' variant
' string example
  s = "10&-2&&-5&-8"
' tokenize string parts
  vParts = Split(s, "-")                ' split at delimiter "-"
' get main numbers
  first = getNumber(vParts(0))          ' get first number
  start = getNumber(vParts(1)) + first  ' calculate start number (from)
  ends = getNumber(vParts(2)) + first   ' calculate ends  numnber (to)
  last = getNumber(vParts(3)) + first   ' calculate last  number
' write to array
  ReDim v(0 To last - first + 1)
  v(0) = first
  For i = 1 To ends - start + 1
      v(i) = start + i - 1
  Next i
  v(i) = last
' write back to sheet
  ThisWorkbook.Worksheets("Sheet1").[A2].Resize(i + 1, 1) = WorksheetFunction.Transpose(v)
End Sub
辅助功能

Function getNumber(ByVal s As String) As Long
' Purpose: return a number from a string ending with "&" or "&&"
getNumber = Val(Split(s, "&")(0))
End Function

尝试编辑您的示例。。。目前还不清楚转换应该如何进行。还有:到目前为止你尝试了什么?stackoverflow用于特定的编码问题,而不是自由职业者服务。符号代表什么?为什么会错过11、16和17?为什么在18岁结束?为什么???对不起,我将描述有关我的问题的更多细节:我想转换数字范围,如10&-2&&-5&-8=10&12&&15&18=10&12&13&14&15&18。“&&”符号表示序列号列表,开始号在左侧,结束号在右侧。谢谢。发布了一个解决方案,使用
Split
函数假设四个部分的固定模式,并试图破解其中不寻常的逻辑。