根据编号轮廓将单元格中的字符移至新单元格

我正在Windows 7上运行Office Professional Plus 2013.请按照以下图像中的描述使用matrix。

excel矩阵

matrix数据可在此Google电子表格中find。

以下是matrix的两个事实:

  1. 列A是大纲级别从1到13的数字大纲。
  2. 大纲编号是按顺序的。

这是一个关于如何组织matrix的例子:

  1. A4(轮廓级别2)在M4中有一个括号,其中列M(标记为“L-02”)对应于轮廓级别2。
  2. A16(大纲级别6)在I6(眼睛6)中有一个括号,其中列I(标记为“L-06”)对应于大纲级别6。
  3. A7(大纲级别5)在J7中没有括号,其中列J(标记为“L-05”)对应于大纲级别5。

需要编写一个公式或VB脚本的帮助,如下所示:

  1. 用于括号的大纲级别列
  2. 查找下一行,其中列A中的轮廓具有小于等于当前大纲级别的位置的数量的位置
  3. 那么将括号 outline列的当前单元格移动到FIND解决scheme之前的同一列中的单元格

例如,看看第16行。需要:

  1. find下一行,其中A16的位置数小于等于 A16的位置数。 该行是21,因为FIND将识别一个小于A16位置数的单元(A21)。
  2. 接下来,备份一行。
  3. 然后,将支架 I16(眼睛16;轮廓等级6) 移至 I20。

图像中的黄色单元格是列中托架必须移动的单元格的示例。

如何在Excel中做到这一点?

问我关于#1 – #11的任何问题。 例如,大纲编号scheme是否可以改变,以便于parsing和比较? 是的,小数点可以被删除。

Google spreadsheet ,一组带有红色“x”的单元格表示括号应该移动的位置。

如果我理解了algorithm,你可以用公式来解决它。 这是我的结果:

在这里输入图像说明

P2公式(向下拖动以填充列)是:

 =LEN(A2)-LEN(SUBSTITUTE(A2,".","")) 

它计算的数量. 在目前的大纲中(你有,而不是在某些情况下,所以你应该使用replace all来修复它)。

范围Q1:AD1包含级别号码。

Q2公式(填写整个范围):

  =IF(AND($P2>$P3,MEDIAN($P2,$P3+1,Q$1)=Q$1),"]","") 

它检查当前级别是否高于下一级别,以及是否显示] (从下一行级别+1)到当前行级别的括号。

您的示例和我的结果之间的唯一区别是L10单元格,但我认为根据您的algorithm, L9的括号应该移到L10 (而不是L11 )。

我想你应该find支架所在的列。 然后定义一个在同一行开始的数组,并在你find+1的列上。 所以,如果你的第16行,它应该从J16开始到你的数据集的右下边界(图中的O36)。 然后search第一次遇到括号时,可以在行数上使用FOR循环,并在这里在列上嵌套一个FOR循环,嵌套if语句。 然后,当您确定该行时,您可以使用单元格将括号复制到新的单元格中。

我刚开始写几个星期前的脚本,所以我不能准确地做这个代码。 但它看起来像这样。

 DIM Array as string DIM totalrows as Thisworkbook.thisworkseet.count.rows FOR rows x to totalrows FOR column X to totalcolumns IF cells(row,col) = Cells(cell you are looking up) THEN Cells (cell you are looking up) = (row -1, col) Exit FOR End if Next column Next row