我正在寻求以下任务的帮助,很乐意提供帮助!
我想要实现的目标:
我开始使用Here找到的代码,但经过大量修改以完成上述任务后,它在我要做的事情列表的中途停止工作。
下面是代码(还没有错误处理程序等)以及图片的下方(我想要实现的内容应该是这样的;不应该从一个工作表添加或更新到另一个工作表的单元格的红色背景颜色)。 另请注意,我调整了很多变量,因为我想在以后实现不同的选择。
同样,任何帮助都将受到高度赞赏
更新:任何人有兴趣的最终代码
价格行按上述颜色编码
Option Explicit
Sub Import()
Const IMPORTFILENAME = "export_data.xlsx"
Dim key As Variant
Dim cell As Range
Dim dProducts As Object
Set dProducts = CreateObject("Scripting.Dictionary")
With Workbooks(IMPORTFILENAME).Sheets(1)
For Each cell In .Range("B8", .Range("B" & .Rows.Count).End(xlUp))
If Not IsEmpty(cell) Then
key = cell.Value
If dProducts.Exists(key) Then
'There is a duplicate value
Debug.Print "Duplicate values", dProducts(key).Address, cell.Address
Else
'Add the cell range object to the dictionary
dProducts.Add key, cell
End If
Else
End If
Next
End With
With ThisWorkbook.Sheets(1)
For Each cell In .Range("C12", .Range("C" & .Rows.Count).End(xlUp))
key = cell.Value
If dProducts.Exists(key) Then
cell.Offset(0, 1).Value = dProducts(key).Offset(0, 1).Value
cell.Offset(0, 3).Value = dProducts(key).Offset(0, 2).Value
cell.Offset(0, 3).Interior.Color = vbGreen
'Remove the Export cell reference
dProducts.Remove key
Else
If Not IsEmpty(cell) Then
If cell.Value <> 0 Then
cell.Offset(0, 3).Interior.Color = vbRed
Else
End If
Else
End If
End If
Next
For Each key In dProducts.Keys
With .Range("C" & .Rows.Count).End(xlUp).Offset(1, 0)
.EntireRow.Insert
.Offset(-1, 0).Value = dProducts(key).Value
.Offset(-1, 3).Interior.Color = vbBlue
.Offset(-1, 1).Value = dProducts(key).Offset(0, 1).Value
.Offset(-1, 3).Value = dProducts(key).Offset(0, 2).Value
End With
Next
End With
End Sub
答案 0 :(得分:0)
您的代码似乎有两张纸向后。无论如何,我的代码都基于您的图像。我不确定您想要的某些格式,但您应该能够轻松修改代码以满足您的需求。
我建议在比较两个列表中的唯一项目(或搜索重复项目)时使用词典或集合。你应该看:Excel VBA Introduction Part 39 - Dictionaries
在许多情况下,您可以使用常量来减少代码行。我还建议使用短变量名称和<div id="sample-div" contenteditable="true">
this is a
</div>
块来减少代码混乱。理想情况下,您永远不必水平滚动以查看代码行正在做什么。
$(document).ready(function(){
$('span').keyup(function(){
if(!this.value)
{
alert('this is empty');
}
});
});