EXCEL表格中如何根据前面的数字排列后面的汉字,数字规律是1,2分列排序,汉字随机,如下图,需要左变右

就是假如我的数据是竖着的2111112221112212 那我就需要第一列变成2,第二列变成11111 第三列变成222第四列变成111 第5列变成22 第6列变成1 第7列变成2 就是前面的数据分别用列隔开然后后面是带随机数字的

用VBA解决很简单!ALT+F11打开VBA编辑器,插入模块,将以下代码粘贴,按F5运行。

Sub sortnum()

Dim i, j, k, l, m As Integer

Sheet1.Activate

j = Range("a65535").End(xlUp).Row

l = 0

m = 1

For i = 1 To j

  k = 2 * m + 1

  l = l + 1

  Cells(l, k) = Cells(i, 1)

  Cells(l, k + 1) = Cells(i, 2)

  If Cells(i + 1, 1) <> Cells(i, 1) Then

     l = 0

     m = m + 1

  End If

Next

End Sub

追问

高手啊 谢谢 我希望从结果从F列开始 如何修改呢

追答

将公式中的 k = 2 * m + 1改为 k = 2 * m + 4

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-02

编了一个公式,E1中输入

=IF((ROW()>INDEX(FREQUENCY(IF($A$1:$A$15=$A$2:$A$16,ROW($1:$15)),IF($A$1:$A$15<>$A$2:$A$16,ROW($1:$15)))+1,MIN(SUMPRODUCT(N($A$1:$A$15<>$A$2:$A$16))+1,COLUMN(B:B)/2)))+(COLUMN(A:A)>(SUMPRODUCT(N($A$1:$A$15<>$A$2:$A$16))+1)*2),"",INDEX($A$1:$B$16,COUNT($C:C)+ROW(),MOD(COLUMN(B:B),2)+1))

同时按下CTRL+SHIFT+回车,输入数组公式,右拉,下拉。

详见附件,其中填充黄色的为公式,C列的D列被当作辅助单元格区域,不得输入数字。

追问

高手 厉害 谢谢你 果断采纳

谢谢 如果是这样的 有办法吗 就是假如我的数据是竖着的小大大大大大小小小大大大小小大小 那我就需要第一列变成小,第二列变成大大大大大第三列变成小小小第四列变成大大大第5列变成小小 第6列变成大 第7列变成小 就是前面的数据分别用列隔开然后后面是带随机数字的

原数据是在C D 列 显示结果在F列之后

追答

那么F1中输入
=IF((ROW()>INDEX(FREQUENCY(IF($C$1:$C$15=$C$2:$C$16,ROW($1:$15)),IF($C$1:$C$15$C$2:$C$16,ROW($1:$15)))+1,MIN(SUMPRODUCT(N($C$1:$C$15$C$2:$C$16))+1,COLUMN(B:B)/2)))+(COLUMN(C:C)>(SUMPRODUCT(N($C$1:$C$15$C$2:$C$16))+1)*2),"",INDEX($C$1:$D$16,SUM(COUNTIF($D:D,{"小","大"}))+ROW(),MOD(COLUMN(D:D),2)+1))
三键齐按下拉右拉

追问

谢谢!

追答

不客气,不过D列不可输入小或大,否则会误判

本回答被提问者采纳
第2个回答  2014-06-26
你这个得用VBA编码了
相似回答