列出各种范围内的所有数字(1 - 6; 1,2,5和23;等)

时间:2013-09-05 20:59:18

标签: regex excel excel-vba numbers range vba

我正在开发一个项目,其中我有一组Ward Group数据,数据格式为市政名称 - 类型(城市,城镇,村庄)病房。例如:

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行都有几列选举数据,我希望将其复制到每个新行中。例如:

Ward Group             Total Votes    
ADAMS - T 1 & 2          300    

需要成为:

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

有没有办法在Excel中手动执行此操作,无论是公式还是VBA?

1 个答案:

答案 0 :(得分:1)

虽然没有这样标记,但我怀疑你将需要代码,所以意味着你的问题“必须证明对正在解决的问题的最小理解。包括尝试的解决方案,为什么它们不起作用,以及预期结果“。或者可能被认为是主题。所以也许从公式开始(假设每个'行'是一个单元格):

  1. 也许正则表达式使得市政名称 - 类型链接更加一致(比如查找字母空格字母空格并用字母空格连字符空格字母空格替换 - 所以Cumberland V 1 - 5最终会以与其他字母空格相似的格式结束,即Cumberland - V 1 - 5。)
  2. 然后使用=SUBSTITUTE(A1,"-",",",1)替换带有逗号的Type之前的连字符(可以回复连字符,因为也用于范围指示)。
  3. 然后“修复”结果(选择“粘贴特殊值”以替换公式)。
  4. 然后用“,”和“&”解析结果(Text to Columns)作为分隔符(仅限)。
  5. 立即在这些列的左侧插入三个新列,并用空格和连字符作为分隔符解析(现有的)左列。
  6. 应用于您的示例,此时结果应该如此:

    SO18645869 example

    专栏C& D是范围的下限和上限 - 但我担心E3单独代表一个范围(虽然这可能会再次与文本到列分开 - 需要注意的一点可能是混淆27-29与27& 29 。

    公式可以做得更多,但我认为VBA是一个更好的选择 - 除非这绝对是一次性的“一次性”要求。例如,如果在不同的单元格中,则可以在页面(?)被拆分之后附加投票,通过查找功能。