我有几张表,需要将每个单元格的第一行移动到最后一行。例如这是一个单元格:
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 |
+----------------------+
干杯。