一样的,多一个循环而已,在遍历所有行的时候,再把多值split拆分后遍历即可
DataTables("表B").DataRows.Clear
For Each 行 As DataRow In DataTables("表A").DataRows
For Each 科目 As String In "事宜|环境|成本".Split("|")
For Each 事宜 As String In 行.Lines(科目)
Dim 新增行 As DataRow = DataTables("表B").AddNew
新增行("编号") = 行("编号")
新增行("国家") = 行("国家")
新增行("科目") = 科目
新增行("表A多列多值跨表转单行") = 事宜
Next
Next
Next
感谢,前辈高手 蓝大师
交学费,收徒吗?
前辈、蓝大师,增加一个判断,如果表b已经存在就不新增行,还有如果表a删除这行,表b也删除这行,代码怎么写?这个对我来说太难了
DataTables("表B").DataRows.Clear
For Each 行 As DataRow In DataTables("表A").DataRows
For Each 科目 As String In "事宜|环境|成本".Split("|")
For Each 事宜 As String In 行.Lines(科目)
Dim dr As DataRow = DataTables("表B").Find("编号 = " & "'" & e.DataRow("编号") & "' and 国家 = " & "'" & e.DataRow("国家") & "' and 成本 = " & "'" & e.DataRow("成本") & "'")
If dr IsNot Nothing' Then Then如果找到,则设置各列内容
Dim 新增行 As DataRow = DataTables("表B").AddNew
新增行("编号") = 行("编号")
新增行("国家") = 行("国家")
新增行("科目") = 科目
新增行("表A多列多值跨表转单行") = 事宜
End If
Next
Next
Next
[此贴子已经被作者于2024/9/2 15:13:01编辑过]
For Each 行 As DataRow In DataTables("表A").DataRows
For Each 科目 As String In "事宜|环境|成本".Split("|")
For Each 表A多列多值跨表转单行 As String In 行.Lines(科目)
Dim 编号 As String = 行("编号")
Dim 国家 As String = 行("国家")
Dim 查找行 As DataRow = DataTables("表B").Find("编号 = '" & 编号 & "' and 国家 = '" & 国家 & "' and 科目 = '" &
科目 & "' and 表A多列多值跨表转单行 = '" & 表A多列多值跨表转单行 & "'")
If 查找行 Is Nothing Then
Dim 新增行 As DataRow = DataTables("表B").AddNew
新增行("编号") = 行("编号")
新增行("国家") = 行("国家")
新增行("科目") = 科目
新增行("表A多列多值跨表转单行") = 表A多列多值跨表转单行
End If
Next
Next
Next
前辈、高手
发现一个问题,表A修改 多值中的一行值“吊顶”,改成“吊顶22”
表B 吊顶,这行没删,有点问题
求助 : 如果要表B里有这行,表A里没这行,单元格绘制 样式1 这样如果就能发现问题
此主题相关图片如下:113.jpg