如何将细胞对齐到右边

时间:2015-09-25 16:25:19

标签: excel

我有一组数据,我从.pdf复制并粘贴到Excel中。我需要它做的是粘贴后将细胞对齐到右边。

有没有办法让Excel为我调整一切?

示例:之前

OR  MARKER  LE  20.92   20.92   104.6
CAC HOT SIDE    29.02   29.02   29.02
44.55   44.55   44.55           
16.77   16.77   33.54           
SENDER  25.21   25.21   25.21       
RH  35.72   35.72   35.72       
BRUSHLESS   310.2   279.18  279.18      
EXTENDER    R   101.6   101.6   101.6   
STRUT   288.21  288.21  288.21      

OR  MARKER  LE  20.92   20.92   104.6
CAC HOT SIDE    29.02   29.02   29.02
                44.55   44.55   44.55
                16.77   16.77   33.54
      SENDER    25.21   25.21   25.21
          RH    35.72   35.72   35.72
    BRUSHLESS   310.2   279.18  279.18
EXTENDER    R   101.6   101.6   101.6
       STRUT    288.21  288.21  288.21

我没有在单元格内对齐文本,但是单元格本身在右侧。所以所有空单元格都在左边。

2 个答案:

答案 0 :(得分:1)

听起来像是人不理解您的问题,这是一件很难的事情-根据其中包含值的最右边单元格将实际单元格值移到右边。在文本没有被设计为包含真正的分隔符的情况下,必须根据空格对文本行进行分隔之后,我遇到了这种情况。

似乎没有任何内置函数可以执行您所要的操作,因此我必须为自己构建一个VBA宏。

您可以根据需要更改startRow和startCol,然后针对具体情况进行调整,但外观如下:

Sub RightShiftColumnValues()
    Dim startCol As Integer
    Dim startRow As Integer
    Dim endCol As Integer
    Dim numRows As Integer

    ' set starting row and column
    startRow = 1
    startCol = 1

    ' find number of rows
    Cells(startRow, startCol).Select
    Selection.End(xlDown).Select
    numRows = Selection.Row - startRow + 1
    ' find rightmost column with a value
    Dim i As Integer
    For i = startCol + 1 To 500
    Cells(startRow, i).Select
        Selection.End(xlDown).Select
        If (Selection.Row > numRows + startRow) Then
            endCol = i - 1
            Exit For
        End If
    Next i

    Dim currRow As Integer
    ' now go through each row and right align the actual cells
    For currRow = startRow To numRows
        Dim j As Integer
        Dim rowBlanks As Integer
        rowBlanks = 0 ' track number of blank columns in this row starting from the right
        ' Cells(currRow, endCol).Select ' select current cell if you want to uncomment and watch the process
        For j = 1 To endCol - 1
            If (IsEmpty(Cells(currRow, endCol - j).Value)) Then
                    rowBlanks = rowBlanks + 1
            Else
                ' shift values
                Cells(currRow, endCol - j).Select
                Cells(currRow, endCol - j + 2 + rowBlanks).Value = Cells(currRow, endCol - j).Value
                Cells(currRow, endCol - j).Value = ""
            End If
        Next j
    Next currRow
End Sub

答案 1 :(得分:0)

数字应该已经对齐了。

要对齐的文本,您可以选择单元格并右键单击以获取上下文菜单。 左键单击格式化单元格。 单击“对齐”选项卡 将水平设置为"右缩进" 单击确定

另一种方法是选择文本,然后单击功能区中的右对齐图标。