是否有Excel函数或简单的宏来确定单元格中的文本是左侧还是右侧?

问题描述

我有一列多行。每行包含文本。有些文本左对齐,有些在中间,有些在右。

我想再增加一列,每行将收到一个值:如果文本在左侧对齐,则为“ LEFT”,如果在中间,则为“ MIDDLE”,等等。

有什么想法怎么做?

解决方法

据我所知,尚无确定细胞比对的公式。 但是,您可以使用VBA创建UDF(用户定义函数)来实现此目的。

例如,如果将以下内容放在VBA中的模块中...

Function CELL_ALIGNMENT(r As Range) As String

    Select Case r.HorizontalAlignment
        Case -4131
            CELL_ALIGNMENT = "LEFT"
        Case -4108
            CELL_ALIGNMENT = "CENTER"
        Case -4152
            CELL_ALIGNMENT = "RIGHT"
        Case Else
            CELL_ALIGNMENT = "OTHER"
    End Select

End Function

...然后在单元格B1中键入以下内容...

=CELL_ALIGNMENT(A1)

...这将告诉您单元格A1中文本的对齐方式。

,

唯一的方法是在VBA中创建UDF:

User Defined Functions

您可以执行3个功能:1个用于获取水平对齐方式,另一个用于获取垂直对齐方式,最后一个用于将这些数值转换为文本:

Public Function GET_H_ALIGN(ByVal rng As Range) As String
If rng.Count <> 1 Then
    GET_H_ALIGN = "ERROR"
Else
    GET_H_ALIGN = CONVERT_XL(rng.HorizontalAlignment)
End If
End Function

Public Function GET_V_ALIGN(ByVal rng As Range) As String
If rng.Count <> 1 Then
    GET_V_ALIGN = "ERROR"
Else
    GET_V_ALIGN = CONVERT_XL(rng.VerticalAlignment)
End If
End Function

Private Function CONVERT_XL(ByVal vValue As Long) As String
Select Case vValue
    Case Is = -4160
        CONVERT_XL = "Left"
    Case Is = -4131
        CONVERT_XL = "Left"
    Case Is = -4108
        CONVERT_XL = "Center"
    Case Is = -4152
        CONVERT_XL = "Right"
    Case Is = -4107
        CONVERT_XL = "Right"
    Case Is = 1
        CONVERT_XL = "None"
    Case Else
        CONVERT_XL = "Error"
End Select
End Function

enter image description here

需要函数CONVERT_XL将数字常量转换为文本值。您可以在此处查看选项:

Constants Enum