Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 显示字符“前有相同文本的其他单元格的内容”-&引用;_Excel_Excel Formula - Fatal编程技术网

Excel 显示字符“前有相同文本的其他单元格的内容”-&引用;

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-

我有两张床单

表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-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并查看结果

能否提供任何输出结果?是否尝试VBA?我不知道从何处开始,因此没有任何结果:(您希望实现什么?您希望结果是什么样子?谢谢!我不是开发人员或Excel专家,我应该将此代码放在哪里?如果我想在第2页中添加第三列,其中显示3,2,1之类的数字,该怎么办?它将计算第2列中的SKU数。在您的示例中,第2、3、4行有2,1,第5、6行有1。是否完美请更具体一点?什么数字?请提供更多详细信息。这是一个简单的计数输出列中有多少sku。这就像一个倒计时。希望是明确的,对不起我的错误english@LucaFrank Guarini希望工作!清除模块,复制粘贴新代码并按F5!