Excel 显示字符“前有相同文本的其他单元格的内容”-&引用;
我有两张床单 表1包含一列,其中包含一些具有此结构的SKU:Excel 显示字符“前有相同文本的其他单元格的内容”-&引用;,excel,excel-formula,Excel,Excel Formula,我有两张床单 表1包含一列,其中包含一些具有此结构的SKU: GM1012-01 GM1012-04 GM1012-06 9431-01 9431-02 etc.. 表2将包含这两列 GM1012-01 | GM1012-04,GM1012-06 GM1012-04 | GM1012-01,GM1012-06 GM1012-06 | GM1012-01,GM1012-04 9431-01 | 9431-02 9431-
GM1012-01
GM1012-04
GM1012-06
9431-01
9431-02
etc..
表2将包含这两列
GM1012-01 | GM1012-04,GM1012-06
GM1012-04 | GM1012-01,GM1012-06
GM1012-06 | GM1012-01,GM1012-04
9431-01 | 9431-02
9431-02 | 9431-01
我需要做的是从第2页开始。
搜索表1中是否存在在“-”之前代码相同的sku,然后以逗号分隔显示所有sku,不包括第一列中的sku
这是两个小时,我正在努力做到:(
谢谢如果我理解正确,这可能会帮助您:
Option Explicit
Sub test()
Dim Lrow1 As Long
Dim Lrow2 As Long
Dim str1 As String
Dim str2 As String
Dim i As Long
Dim j As Long
Dim Counter As Long
Dim TopNu As Long
Lrow1 = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row
Lrow2 = Sheet2.Cells(Sheet2.Rows.Count, "A").End(xlUp).Row
Sheet2.Range("B2" & ":B" & Lrow2).Clear
For i = 2 To Lrow1
str1 = Left(Sheet1.Cells(i, "A").Value, InStr(Sheet1.Cells(i, "A").Value, "-") - 1)
For j = 2 To Lrow2
str2 = Left(Sheet2.Cells(j, "A").Value, InStr(Sheet2.Cells(j, "A").Value, "-") - 1)
If (str1 = str2) And Sheet1.Cells(i, "A").Value <> Sheet2.Cells(j, "A").Value Then
If Sheet2.Cells(j, "B").Value = "" Then
Sheet2.Cells(j, "B").Value = Sheet1.Cells(i, "A").Value
Else
Sheet2.Cells(j, "B").Value = Sheet2.Cells(j, "B").Value & "," & Sheet1.Cells(i, "A").Value
End If
If Sheet2.Cells(j, "B").Value <> "" Then
Counter = (Len(Sheet2.Cells(j, "B").Value) - Len(Replace(Sheet2.Cells(j, "B").Value, ",", ""))) / Len(",")
If Counter = 0 Then
Sheet2.Cells(j, "C").Value = 1
Else
Sheet2.Cells(j, "C").Value = Counter + 1
End If
End If
End If
Next j
Next i
Lrow2 = Sheet2.Cells(Sheet2.Rows.Count, "B").End(xlUp).Row
For i = 2 To Lrow2
If Sheet2.Cells(i, "C").Value <> "" Then
TopNu = Sheet2.Cells(i, "C").Value
Do Until TopNu = 0
If Sheet2.Cells(i, "D").Value = "" Then
Sheet2.Cells(i, "D").Value = TopNu
Else: Sheet2.Cells(i, "D").Value = Sheet2.Cells(i, "D").Value & "," & TopNu
End If
TopNu = TopNu - 1
Loop
End If
Next i
End Sub
选项显式
子测试()
变暗Lrow1与长
昏暗的Lrow2与长
将str1设置为字符串
将str2设置为字符串
我想我会坚持多久
Dim j尽可能长
昏暗的柜台一样长
长时变暗
Lrow1=Sheet1.单元格(Sheet1.Rows.Count,“A”).结束(xlUp).行
Lrow2=Sheet2.单元格(Sheet2.Rows.Count,“A”).结束(xlUp).行
表2.范围(“B2”和“:B”和Lrow2).清除
对于i=2至Lrow1
str1=左侧(表1.单元格(i,“A”).值,仪表(表1.单元格(i,“A”).值“-”)1)
对于j=2至Lrow2
str2=左侧(表2.单元格(j,“A”).值,仪表(表2.单元格(j,“A”).值“-”)1)
如果(str1=str2)和表1.单元格(i,“A”).值表2.单元格(j,“A”).值,则
如果表2.单元格(j,“B”).Value=“”,则
表2.单元格(j,“B”).值=表1.单元格(i,“A”).值
其他的
表2.单元格(j,“B”).值=表2.单元格(j,“B”).值和“,”和表1.单元格(i,“A”).值
如果结束
如果表2.单元格(j,“B”)的值为“”,则
计数器=(Len(Sheet2.单元格(j,“B”).值)-Len(替换(Sheet2.单元格(j,“B”).值,“,”)/Len(“,”)
如果计数器=0,则
表2.单元格(j,“C”)。值=1
其他的
表2.单元格(j,“C”)。值=计数器+1
如果结束
如果结束
如果结束
下一个j
接下来我
Lrow2=Sheet2.单元格(Sheet2.Rows.Count,“B”).结束(xlUp).行
对于i=2至Lrow2
如果表2.单元格(i,“C”)的值为“”,则
TopNu=表2.单元格(i,“C”).值
直到TopNu=0为止
如果表2.单元格(i,“D”).Value=“”,则
表2.单元格(i,“D”)。值=TopNu
其他:Sheet2.Cells(i,“D”).Value=Sheet2.Cells(i,“D”).Value&“,”和TopNu
如果结束
TopNu=TopNu-1
环
如果结束
接下来我
端接头
结果:
表1:
第2张:
确保:
- 在表1中,A列中的SKU从A2开始
- 在表2中,A列中的SKU从A2开始
- 打开Excel,先按ALT,然后按F11
- 插入并按下模块
- 删除模块中的所有内容,复制粘贴代码并按F5
- 访问excel并查看结果