大神啊,不好意思,你这个代码确实是可以运行的。但今天我回去看了一下表,又出问题了。是这样的有些产品型号和零件连续出现两次或两次以上,如图产品型号A在同一单元格出现了三次,如何让它只出现一次呢?今天交上去被喷了,求大神再次出手,感激不尽!!!!!
下面这句前面加个判断就好了:
d(tmp) = d(tmp) & " " & a(i, 1)
改成:
If InStr(1, " " & d(tmp) & " ", " " & a(i, 1) & " ") = 0 Then
d(tmp) = d(tmp) & " " & a(i, 1)
End If
大神啊,不好意思,你这个代码确实是可以运行的。但今天我回去看了一下表,又出问题了。是这样的有些产品型号和零件连续出现两次或两次以上,如图产品型号A在同一单元格出现了三次,如何让它只出现一次呢?今天交上去被喷了,求大神再次出手,感激不尽!!!!!
还可以啦,至少能写的这么多,我真是一点都不会
本回答被网友采纳好吧。。。。。。。。。
追答附件看私信。
Sub Macro1()
Dim row_last As Integer
Dim a As Integer, b As String, c As String, i As Integer
Dim flag As Boolean, temp1 As Boolean, temp2 As Boolean
' ÕÒ³ö×îºóÒ»ÐÐ
Selection.SpecialCells(xlCellTypeLastCell).Select
flag = False
Do While flag = False
If ActiveCell.Row = 1 Then
Exit Do
End If
Selection.End(xlToLeft).Select
temp1 = IsEmpty(ActiveCell.Value)
Selection.End(xlToRight).Select
temp2 = IsEmpty(ActiveCell.Value)
If temp1 = True And temp2 = True Then
Selection.Offset(-1, 0).Select
Else
flag = True
Exit Do
End If
Loop
Selection.End(xlToLeft).Select
row_last = ActiveCell.Row
' ת»»
a = 2
b = Cells(2, 2)
c = Cells(2, 1)
Cells(a, 6) = Cells(2, 2)
Cells(a, 7) = Cells(2, 3)
Cells(a, 8) = Cells(2, 4)
Cells(a, 5) = Cells(2, 1)
For i = 3 To row_last
If b = Cells(i, 2) Then
c = c & " " & Cells(i, 1)
Cells(a, 5) = c
Else
数量是当排列的第一个零件遇到的数量是几,那这个零件的数量就是几,比如列表的第一个零件甲数量是2,就让所有产品型号的零件甲都是2,层数也一样的道理。我说得清楚吗?
追答用函数做 需要两步 用VBA做 直接能做
追问帮我写个代码呗,感激不尽
追答=INDEX($A:$A,SMALL(IF($B$2:$B$17=$F2,ROW($1:$16),4^4),COLUMN(A1))+1)&""
这个是取型号的 右拉就行 拉完再合到一起
数量和层数用 VLOOKUP引用就行