Excel 如何交换多个单元格?

Excel 如何交换多个单元格?,excel,vba,Excel,Vba,是否有在Excel中自动交换/切换数据的方法 例如: 我有一张将近16000列的Excel表格。每列有5行。这5行包含A、B、C、D、E等信息,但数据没有排序,因此我有以下内容:B、A、C、D、E或B、C、D、E 我想把所有As放在第一位,不包含Aso(B,C,D,E)的行在B之前添加一个空行 我只找到了如何用较少的数据和列手动执行此操作。根据您的评论,下面的代码适用于您列出的3项。如果有更多选项,只需更新数组中的字段即可 Sub CFixer() Dim c As Long, WS As Wo

是否有在Excel中自动交换/切换数据的方法

例如:

我有一张将近16000列的Excel表格。每列有5行。这5行包含
A、B、C、D、E等信息,但数据没有排序,因此我有以下内容:
B、A、C、D、E
B、C、D、E

我想把所有
A
s放在第一位,不包含
A
so
(B,C,D,E)
的行在
B
之前添加一个空行


我只找到了如何用较少的数据和列手动执行此操作。

根据您的评论,下面的代码适用于您列出的3项。如果有更多选项,只需更新数组中的字段即可

Sub CFixer()
Dim c As Long, WS As Worksheet, i As Integer, startRow As Integer, lastRow As Long, checkRNG As Range

Dim Check(2) As String 'must match below list
Check(0) = "BAC"
Check(1) = "GLO"
Check(2) = "HDP"

Dim T(2) As String ' must match list above
startRow = 1 'first row to evaluate


Set WS = ActiveSheet
lastRow = startRow + UBound(Check) 'last row to look to replace

For c = 1 To WS.UsedRange.Columns.Count
    Set checkRNG = Range(WS.Cells(startRow, c), WS.Cells(lastRow, c))

    For i = 0 To UBound(Check)

        If Application.WorksheetFunction.CountIf(checkRNG, Check(i)) > 0 Then
            T(i) = Check(i)
        Else
            T(i) = ""
        End If

    Next i

    checkRNG.Value = Application.WorksheetFunction.Transpose(T)

Next c

End Sub
这将更改行,如图所示:

图片后更正:

您可以使用公式(先填写,然后填写):


请上传您工作簿的快照或示例…为什么要使用javascript标记?你说A、B、C等的解决方案你是说按字母顺序排序吗?我不能上传图片,因为我正在用手机回答adk问题。我想我可以用Javascript修改它。不,A,B,C只是一个例子。但我需要编辑的是:BAC、GLO、HDP这些只是该公司使用的某些服务的首字母缩写。但有时我会在第二行或第三行而不是第一行得到BAC,所以只有5个可能的值,所有列都包含一些或所有这些值?