是否有 excel 函数或简单的宏来确定文本在单元格中是左还是右?
Is there excel function or simple macro to determine if text is left or right in the cell?
我有一列多行。每行都包含文本。一些文本左对齐,一些在中间,一些在右。
我想要第二列,其中每一行都会收到一个值:如果文本左对齐,则为“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 个功能:第一个用于获得水平对齐,另一个用于垂直对齐,最后一个用于将这些数值转换为文本:
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 将数字常量转换为文本值。您可以在此处查看选项:
我有一列多行。每行都包含文本。一些文本左对齐,一些在中间,一些在右。
我想要第二列,其中每一行都会收到一个值:如果文本左对齐,则为“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 个功能:第一个用于获得水平对齐,另一个用于垂直对齐,最后一个用于将这些数值转换为文本:
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 将数字常量转换为文本值。您可以在此处查看选项: