根据每行多个单元格的值search表

我试图find一个单位的前一个值(单位的数据是一整行)进入一个表。 随着时间的推移,单位的其中一列中的值会增加,我试图使用一个循环来分析每行中的每一行,并在该特定单位input一个新值时返回该特定单位的前一个值单元。

'My Variables Dim current_size As Integer Dim last_size As String Dim joint_number As Integer Dim tool_sizes As Range: Set tool_sizes = drill_log.Range("Drill_Log[Tool Size]") Dim joints As Range: Set joints = drill_log.Range("Drill_Log[Joint '#]") Dim pass_types As Range: Set pass_types = drill_log.Range("Drill_Log[Pass Type]") Dim row As Range 'Finds the current pass size and last pass size and assigns it to the current pass size variables If pass_type = ream Then current_size = drill_log.Range("W" & last_ream_range.row) joint_number = drill_log.Range("C" & last_ream_range.row) ElseIf pass_type = intersect_ream Then current_size = drill_log.Range("W" & last_intersect_ream_range.row) joint_number = drill_log.Range("C" & last_intersect_ream_range.row) Else Exit Sub End If 'Finds the previous pass size for the last joint entered For Each row In drill_log.Range("Drill_Log") 'Line that Errors If pass_types.Value = pass_type And joints.Value = joint_number Then If tool_sizes < current_size Then last_size = tool_sizes Else last_size = "NONE" End If Else End If Next row 

我的目标是让它检查每行中的指定列,如果匹配,则将其分配给variables,如果包含信息的列中的单元格小于当前值。

现在它告诉我,我有一个types不匹配,我无法解决它。 谢谢您的帮助。

比较Range.Value与string或数字或其他types的指令, types不匹配错误几乎肯定是由于Range.Value包含一个错误值。

要么修复数据,并确保在这些单元格中永远不会出现错误:

 =IFERROR([whatever formula you have here], "") 

或者更改代码,使其不再假定单元格中不存在错误:

 If Not IsError(pass_types.Value) And Not IsError(joints.Value) Then If pass_types.Value = pass_type And joints.Value = joint_number Then '... End If End If 

…或者安全地玩,并尽可能地做。


types不匹配的原因是,当IsError(Range.Value)TrueRange.Value的types是Variant/Error ,而VBA不知道如何将Error值与任何东西进行比较。

摄制:

 Debug.Print TypeName(CVErr(xlErrNA)) 'prints "Error" Debug.Print IsError(CVErr(xlErrNA)) 'prints "True" Debug.Print CVErr(xlErrNA)) = vbNullString 'type mismatch Debug.Print CVErr(xlErrNA)) = 0 'type mismatch