连接来自所有不完整行的条目,其中包含完整行中的条目

时间:2016-01-01 15:32:59

标签: excel vba excel-vba concatenation data-cleansing

我使用在线文件格式转换器将包含大量价格表的几个文件从* .pdf转换为* .xls格式。但是,转换没有产生预期的结果,并且需要对文件进行更多的清理工作。尝试过各种不同的方法,使用宏录制器和大头针溢出并失败了。

我需要一个宏来对我的数据执行以下清理工作。

  1. 循环选定数据中的行,并搜索缺少一个或多个单元格中的条目的不完整行。
  2. 将这些不完整行中的文本与其上方第一个完整行中相同列中的单元格连接起来。
  3. 实施例

    如果行A包含所有条目,但行B缺少产品代码列中的条目,则行B中针描述列中的条目应与行A中的针描述连接

    此文件包含10行数据。选项卡1显示包含前两个产品的不完整行的数据。选项卡2显示了我希望它的形式。

    http://www.filetolink.com/5e39eaaf00

    我会非常感谢任何帮助,因为它会为我节省很多麻烦。

1 个答案:

答案 0 :(得分:0)

我没有提起该文件,因为该网站存在极端的安全风险警告,但就我所知,以下代码将按照您的意愿行事。如果没有,请澄清,我会根据需要进行修改。

我的Excel列按以下顺序排列: ID,ProductCode,NeedleDescription

如果您的NeedleDescription不是ProductCode右侧的第一列,则无法使用。只是让我知道您的列的顺序,我会根据需要进行修改。

  1. 将以下内容复制到模块中
  2. 突出显示您想要清理的范围
  3. 运行宏“清理”
  4. 它将遍历所有行并使用以下连接填充所有空单元格: CurrentRowNeedleDescription& PreviousRowNeedleDescription

    Sub Cleanse()
        'Fill an empty or blank cell in selection
        'with formula specified
    
        'First Highlight Affected Range, then run this macro
    
        Dim cell As Range
    
        On Error Resume Next
    
        'Set formula to include in empty cells
        'to be the description of existing row plus description of previous row
    
        'Test for empty cell. If empty, fill cell with value given
        For Each cell In Selection
            If IsEmpty(cell) Then
                cell.FormulaR1C1 = "=RC[1]&R[-1]C[1]"
            End If
        Next
    End Sub
    

    希望有所帮助!