列出不同范围内的所有数字(1 – 6; 1,2,5和23等)

我正在做一个项目,我有一个病房组数据的一列,数据格式为市级名称(市,镇,村)病房。 举个例子:

ADAMS - T 1 & 2 Cumberland V 1 - 5 Marshfield - C 1 - 20, 23 - 25 & 27 .... etc. 

为了把这个信息连接到政府提供的病房shapefile,我需要每个病房有一行。 所以例如,我需要把上面的信息转换成:

 ADAMS - T 1 ADAMS - T 2 Cumberland V 1 Cumberland V 2 Cumberland V 3 Cumberland V 4 Cumberland V 5 Marshfield - C 1 .... Marshfield - C 20 Marshfield - C 23 Marshfield - C 24 Marshfield - C 25 Marshfield - C 27 

此外,每个沃德集团行有几列选举数据,我想复制到每一个新的行。 举个例子:

 Ward Group Total Votes ADAMS - T 1 & 2 300 

需要成为:

 Ward Group Total Votes ADAMS - T 1 300 ADAMS - T 2 300 

有没有办法在Excel中这样做,不是手工,公式或VBA?

虽然没有这样的标签,但我怀疑你会要求代码,所以你的问题“必须显示对被解决问题的最低限度的理解,包括尝试的解决scheme,为什么他们不工作,以及预期的结果。 或者可以被视为话题。 所以也许从公式开始(假设每个'行'是一个单元格):

  1. 也许正则expression式使市名 – types连接更一致(比如查找字母空格字母空格,并用字母空格连字符空格replace字母空格 – 所以Cumberland V 1 - 5以与其他格式类似的格式,即Cumberland - V 1 - 5
  2. 然后使用=SUBSTITUTE(A1,"-",",",1)用逗号replace连字符之前的连字符(因为用于范围指示也可以在连字符上回复)。
  3. 然后“修复”结果(粘贴特殊值来replace公式)。
  4. 然后使用“,”和“&”作为分隔符(仅)分析结果(“文本到列”)。
  5. 在这些列左侧的右侧立即插入三个新列,并使用空格和连字符作为分隔符来parsing(存在的)左列。

应用到你的例子,在这一点上的结果应该是这样的:

SO18645869的例子

C&D列是范围的上限和下限 – 但恐怕E3本身就是一个范围(虽然这可能会再次被Text To Columns分开 – 要注意的一点可能会让27-29和27 &29。

还有更多可以做的公式,但我认为VBA是一个更好的赌注 – 除非这绝对是一个“一次过”的要求。 例如,如果在不同的单元格中,可以通过查找function将页面(?)分割出来之后再附加投票。