因此,我尝试将具有最喜欢颜色的名称列表排序到每个名称。换句话说,我希望排序看起来像下面的例子:( A和B对应列,而#的对应行)
**A** **B** **A** **B**
1 Tim Red 1 Josh Black
2 Blue 2 Yellow
3 Purple 3 Maria Grey
4 Josh Yellow 4 Orange
5 Black 5 Pink
6 Maria Pink 6 Tim Blue
7 Orange 7 Purple
8 Grey 8 Red
我希望它首先对名称进行排序,无论名称在哪里,颜色都会跟随其位置,然后对颜色进行排序。有没有办法在不使用VBA的情况下执行此操作,因为我不知道如何使用VBA。任何帮助都会非常感激,并且对于记录而言,这不适用于课堂作业。
我目前正在使用Microsoft Excel 2011 for Mac。
答案 0 :(得分:0)
我对工作表功能和内容并不是那么好,但我认为如果不使用VBA,你将无法达到你想要的效果。
假设Mac VBA与Windows上的相同,以下代码应该让您入门。
理念:通过填写空白的“名称”单元格进行常规排序工作,并在排序完成后删除额外的名称。我没有包含代码来进行实际的排序,但是下面的两个方法应该填充空单元格并且还将它们清空。
Public Sub InsertDuplicates()
Dim Sheet As Worksheet: Set Sheet = ThisWorkbook.Worksheets("Sheet1")
Dim Current As String: Current = ""
Dim Row As Integer: Row = 1
' Fill the blank cells in the names column
Do
If Sheet.Cells(Row, 2).Value2 = "" Then
' Break out of the loop
Exit Do
End If
If Sheet.Cells(Row, 1).Value2 = "" Then
' No name present, so populate cell with the current name
Sheet.Cells(Row, 1).Value2 = Current
Else
' A name has been found, set it as the current name
Current = Sheet.Cells(Row, 1).Value2
End If
' Goto the next row
Row = Row + 1
Loop
End Sub
Public Sub RemoveDuplicates()
Dim Sheet As Worksheet: Set Sheet = ThisWorkbook.Worksheets("Sheet1")
Dim Current As String: Current = ""
Dim Row As Integer: Row = 1
' Remove unwanted duplicate names in names column
Do
If Sheet.Cells(Row, 2).Value2 = "" Then
' Break out of the loop
Exit Do
End If
If Sheet.Cells(Row, 1).Value2 = Current Then
' Row is a duplicate so empty the value
Sheet.Cells(Row, 1).Value2 = ""
Else
' Row is different from the previous, store the value and continue
Current = Sheet.Cells(Row, 1).Value2
End If
' Goto the next row
Row = Row + 1
Loop
End Sub
Public Sub SortList()
' perform the sort (you can record a macro to get the code required)
End Sub
Public Sub DoIt()
' this is the main macro, call this sub to action a sort.
InsertDuplicates
SortList
RemoveDuplicates
End Sub
答案 1 :(得分:0)
这可以在没有VBA的情况下完成,使用辅助列和手动排序。
如果您想要一直这样做而不是一次,您可能需要考虑更改数据架构。在每行的原始数据表中输入名称,然后构建一个透视表,显示您所在的排序布局。
手动进行排序的步骤:
在第1行插入标题行,并为每列添加标签,即名称,颜色。 添加另一列并在单元格C2中使用此公式(向下复制):
=IF(ISBLANK(A2),C1,A2)
复制列C并使用Paste Special>粘贴自身;值。现在这个列中只有名称。 使用排序对话框首先按新列排序,然后按颜色秒排序。这些是确认排序之前的设置:
排序后,你会看到:
使用此公式添加另一个公式列,从D2开始并向下复制:
=IF(C2<>C1,C2,"")
复制列D,粘贴到A列上的值。删除帮助列。