问题描述
我有一列多行。每行包含文本。有些文本左对齐,有些在中间,有些在右。
我想再增加一列,每行将收到一个值:如果文本在左侧对齐,则为“ 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:
您可以执行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
需要函数CONVERT_XL将数字常量转换为文本值。您可以在此处查看选项: