根据编号轮廓将单元格中的字符移至新单元格
我正在Windows 7上运行Office Professional Plus 2013.请按照以下图像中的描述使用matrix。
matrix数据可在此Google电子表格中find。
以下是matrix的两个事实:
- 列A是大纲级别从1到13的数字大纲。
- 大纲编号是按顺序的。
这是一个关于如何组织matrix的例子:
- A4(轮廓级别2)在M4中有一个括号,其中列M(标记为“L-02”)对应于轮廓级别2。
- A16(大纲级别6)在I6(眼睛6)中有一个括号,其中列I(标记为“L-06”)对应于大纲级别6。
- A7(大纲级别5)在J7中没有括号,其中列J(标记为“L-05”)对应于大纲级别5。
需要编写一个公式或VB脚本的帮助,如下所示:
- 用于括号的大纲级别列
- 查找下一行,其中列A中的轮廓具有小于或等于当前大纲级别的位置的数量的位置
- 那么将括号从 outline列中的当前单元格移动到FIND解决scheme之前的同一列中的单元格
例如,看看第16行。需要:
- find下一行,其中A16的位置数小于或等于 A16的位置数。 该行是21,因为FIND将识别一个小于A16位置数的单元(A21)。
- 接下来,备份一行。
- 然后,将支架从 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