我已经完全重写了我原来的问题,我希望这对Stack礼仪来说还可以吗?
(那不是第3个问题)
****SAMPLE DATA****
Date Order Reference Field 1
06/03/15 **865754iFP 002**
06/03/15 **865754iFP 002**
06/03/15 **818013Dc6 002**
06/03/15 **817660RiV 004**
06/03/15 **920488Hgg 001**
06/03/15 **920488Hgg 001**
06/03/15 **123771Pq2002**
06/03/15 123712p1 001
在上面的示例数据中,您会看到3个标题,日期;订购;参考。领域1。 (Col,s A,B,C,1-8行)
两栏都有订单。这些数字是我在工作簿中突出显示粗体的数字。
我删除了通常填充空格的数据。 (在我的工作簿中有28列和数百行数据。)
我想尝试识别所有粗体单元并将它们合并到一个单元格中。您会注意到,如果A列中没有粗体单元格,则同一行的B列中存在粗体。它将在何处以及以何种形式发生变量。每一行都会有一个粗体单元格。
这是订单号,我需要找到工作表上的所有订单号,无论它们在哪里,突出显示它们,并将每个订单号放入C列,但在同一行中找到它。
工作簿已经运行了一个代码,用于查找,突出显示和清除这些订单号,因此它们都处于我需要它们在最终工作表中的相同基本结构中。例如; 123456ABC; 6个数字,后跟2个或3个字符(Alpha / Num)。
现在我的问题是将它们合并为一列;或者这个术语可能会将它们复制到一列中。
使用C列中的数据填写B列中的所有空白。在我的工作簿中,订单以灰色填充而非粗体字体突出显示。
答案 0 :(得分:1)
如果我正确理解了你的需求,那么你可以使用它:
Sub test()
Dim n&, cl As Range, temp$
n = Cells(Rows.Count, "A").End(xlUp).Row
For Each cl In Range([B2], Cells(n, "B"))
'if B grey and C grey
If cl.Interior.ColorIndex = 15 And cl.Offset(, 1).Interior.ColorIndex = 15 Then
cl.Value = cl.Value & "; " & cl.Offset(, 1).Value
cl.Offset(, 1).Value = "": cl.Offset(, 1).Interior.Pattern = xlNone
'if B not grey and C grey
ElseIf cl.Interior.ColorIndex <> 15 And cl.Offset(, 1).Interior.ColorIndex = 15 Then
cl.Interior.ColorIndex = 15: cl.Offset(, 1).Interior.Pattern = xlNone
temp = cl.Offset(, 1).Value: cl.Offset(, 1).Value = cl.Value
cl.Value = temp
End If
Next cl
End Sub
colorindex
可以替换为另一种颜色,具体取决于您使用的颜色
数据:
运行宏后
数据:
答案 1 :(得分:0)
您需要对每个使用过的列应用过滤器,即查找上次使用的列索引,并使用for循环来应用过滤器,因为您已经在最后一列进行过了。
您可以使用以下代码查找上次使用的列的索引并使用循环。
Public Function LastColumn(Optional wks As Worksheet) As Long
Dim wks As Worksheet
Set wks = ActiveSheet
LastColumn = wks.Cells.Find(What:="*", _
After:=wks.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
End Function