【刚才有点小错误,现在已经更正了一下,答案如下】
你这是姓名和电话吧?
用VBA吧。
如上图所示:
第一步,按ALT+F11打开VBA编辑器
第二步,点击“插入”---插入模块
第三步,双击模块
第四步,在右侧粘贴代码
第五步,点击三角形的那个按钮,可执行代码命令。
代码如下,供复制:
Sub 俺的转置()
Dim rng As Range, ir& '声明变量
For Each rng In Range("A2:A13") '遍历这个区域
If IsNumeric(Left(rng, 1)) = False Or rng.Row = 13 Then '如果首字符不是数字或遍历到最后一行时,那么
If ir > 0 Then '如果ir大于0,那么
rng.Offset(ir - rng.Row).Resize(rng.Row - ir - (rng.Row = 13), 1).Copy '复制
Range("C" & Rows.Count).End(3).Offset(1, 0).PasteSpecial Paste:=xlPasteAll, Transpose:=True '转置粘贴
End If
ir = rng.Row '赋值ir的值为当前姓名所在的行号
End If
Next
MsgBox "处理完毕", , "提示"
End Sub
讨厌的合并单元格会导致你的数据处理变得非常的麻烦啊!!!
如上图:
1、在E1单元格输入数组公式(是数组公式!!!必须CTRL+SHIFT+ENTER这3个键同按结束的!!否则公式无效的!!!)
=IFERROR(INDEX($A$1:$A$12,SMALL(IF(ISERROR(1*$A$1:$B$12),ROW($A$1:$A$12),4^8),ROW(A1))),"")
复制并下拉。
2、在F1单元格输入公式:
=IFERROR(IF(OR(E1="",$E2=INDEX($A$1:$A$12,MATCH($E1,$A$1:$A$12,0)+COLUMN(A$1))),"",INDEX($A$1:$A$12,MATCH($E1,$A$1:$A$12,0)+COLUMN(A$1))),"")
复制并下拉和右拉,至I7单元格,即可…………
2021-08-11