![Excel - 有没有什么聪明的方法可以将每个单元格的第一行移动到最后一行?](https://linux22.com/image/1592442/Excel%20-%20%E6%9C%89%E6%B2%A1%E6%9C%89%E4%BB%80%E4%B9%88%E8%81%AA%E6%98%8E%E7%9A%84%E6%96%B9%E6%B3%95%E5%8F%AF%E4%BB%A5%E5%B0%86%E6%AF%8F%E4%B8%AA%E5%8D%95%E5%85%83%E6%A0%BC%E7%9A%84%E7%AC%AC%E4%B8%80%E8%A1%8C%E7%A7%BB%E5%8A%A8%E5%88%B0%E6%9C%80%E5%90%8E%E4%B8%80%E8%A1%8C%EF%BC%9F.png)
我有几张表,需要将每个单元格的第一行移动到最后一行。例如这是一个单元格:
Chris / Mike / Ralph
Henry / Steve
Mark / Bob
会成为
Henry / Steve
Mark / Bob
Chris / Mike / Ralph
我原本想使用正则表达式,但找不到任何简单的方法来解决这个问题。将单元格复制粘贴到文本编辑器中,然后再复制回去,结果粘贴错误,因为很多单元格都合并了。也许有代码/公式可以做到这一点,但我不确定如何做。
任何想法都会有帮助!
答案1
我可以编写一个简单的 VBA 脚本来执行此操作:
Sub swap()
Dim cel As Range
Dim selectedRange As Range
Set selectedRange = Application.Selection
For Each cel In selectedRange.Cells
Dim lines() As String
Dim firstLine As String
lines = Split(cel.Value, vbLf)
If UBound(lines) > 0 Then
firstLine = lines(0)
lines(0) = lines(UBound(lines))
lines(UBound(lines)) = firstLine
cel.Value = Join(lines, vbLf)
End If
Next cel
End Sub
答案2
您可以做的是添加一个辅助列然后将其删除:
+----------------------+
| NAMES |
+----------------------+
| Chris / Mike / Ralph |
+----------------------+
| Henry / Steve |
+----------------------+
| Mark / Bob |
+----------------------+
对此
+----------------------+------------------+
| NAMES | AUX |
+----------------------+------------------+
| Chris / Mike / Ralph | =count(@[NAMES]) |
+----------------------+------------------+
| Henry / Steve | 1 |
+----------------------+------------------+
| Mark / Bob | 2 |
+----------------------+------------------+
然后按列排序AUX
就完成了。我使用了=count()
公式,这样你就可以将第一行作为最大数字n
,然后其他行从 1 开始到n-1
。然后删除该列。
+----------------------+------------------+
| NAMES | AUX |
+----------------------+------------------+
| Henry / Steve | 1 |
+----------------------+------------------+
| Mark / Bob | 2 |
+----------------------+------------------+
| Chris / Mike / Ralph | =count(@[NAMES]) |
+----------------------+------------------+
进而
+----------------------+
| NAMES |
+----------------------+
| Henry / Steve |
+----------------------+
| Mark / Bob |
+----------------------+
| Chris / Mike / Ralph |
+----------------------+
干杯。