Vba Excel中的主要格式问题-VLOOKUP

Vba Excel中的主要格式问题-VLOOKUP,vba,excel,formatting,excel-2007,vlookup,Vba,Excel,Formatting,Excel 2007,Vlookup,我需要帮助解决Excel中的一个格式问题,它干扰了Excel工作表中的VLOOKUP功能 我有两张表,其中有20000多个列值作为查找,以及相同数量的值作为参考。两个单元格中的所有值的格式都很奇怪,有些在单元格的左上角有绿色三角形,有些是文本,等等 在Excel中是否有方法使用宏/VBA删除或使两个工作表中的所有格式相似?使用VBA的原因是,处理此文件的人员需要所有内容都自动化,并且根本不熟悉Excel。我在单元格中已经有了VLOOKUP函数,我只需要处理格式化 好吧,我用这种方式对付部分查找:

我需要帮助解决Excel中的一个格式问题,它干扰了Excel工作表中的
VLOOKUP
功能

我有两张表,其中有20000多个列值作为查找,以及相同数量的值作为参考。两个单元格中的所有值的格式都很奇怪,有些在单元格的左上角有绿色三角形,有些是文本,等等


在Excel中是否有方法使用宏/VBA删除或使两个工作表中的所有格式相似?使用VBA的原因是,处理此文件的人员需要所有内容都自动化,并且根本不熟悉Excel。我在单元格中已经有了
VLOOKUP
函数,我只需要处理格式化

好吧,我用这种方式对付部分查找:

在items数组中,我创建新的空第一列,然后放置公式

="+"&B2
这将获取单元格B2的内容并在其前面添加+

当我执行vlookup时,我在可搜索值中添加“+”

=VLOOKUP("+"&A6,A:O,2,FALSE)
因此,我通过在前面添加“+”来比较字符串,而不是比较例如字符串和数字

另一种技术是取消所有格式设置: 选择整列,单击“数据-文本-列-分隔符”,然后取消选择所有分隔符。单击Finish。这将清除您的格式设置

===========================================================================

这是您要求的VBA解决方案:

从Excel中调用它

=GetLookup(G2,A:C)
以下是VBA:

Function GetLookup(LOOKFOR As String, RANGEARRAY As Range) As String
  GetLookup = Application.WorksheetFunction.VLookup("+" & LOOKFOR, RANGEARRAY, 3, False)
End Function

祝你好运

好吧,我用这种方式对付部分查找:

在items数组中,我创建新的空第一列,然后放置公式

="+"&B2
这将获取单元格B2的内容并在其前面添加+

当我执行vlookup时,我在可搜索值中添加“+”

=VLOOKUP("+"&A6,A:O,2,FALSE)
因此,我通过在前面添加“+”来比较字符串,而不是比较例如字符串和数字

另一种技术是取消所有格式设置: 选择整列,单击“数据-文本-列-分隔符”,然后取消选择所有分隔符。单击Finish。这将清除您的格式设置

===========================================================================

这是您要求的VBA解决方案:

从Excel中调用它

=GetLookup(G2,A:C)
以下是VBA:

Function GetLookup(LOOKFOR As String, RANGEARRAY As Range) As String
  GetLookup = Application.WorksheetFunction.VLookup("+" & LOOKFOR, RANGEARRAY, 3, False)
End Function

祝你好运

我假设所有单元格中的数据类型都相同,或者您希望所有单元格中的数据类型都相同。以下步骤将使单元格成为统一类型:

  • 保存工作簿,以防这不符合您的要求
  • 选择希望属于同一单元格类型的所有单元格
  • 按Ctrl+1,在“数字”选项卡上,选择希望这些单元格采用的类型。按OK
  • 使用Alt+F11打开VBA编辑器
  • 用Ctrl+G打开即时窗口
  • 键入以下内容:对于所选的每个单元格:cell.formula=cell.value:next cell
  • 按enter键(您可能需要等待几秒钟)
  • 如果您在两个范围上使用相同的数据类型(例如,在步骤3中为两个范围选择“文本”)执行此操作,则您应该“将苹果与苹果进行比较”,并且您的VLOOKUP应根据需要运行

    希望这有帮助


    编辑:格式化、澄清

    我假设所有单元格中的数据类型都相同,或者您希望所有单元格中的数据类型都相同。以下步骤将使单元格成为统一类型:

  • 保存工作簿,以防这不符合您的要求
  • 选择希望属于同一单元格类型的所有单元格
  • 按Ctrl+1,在“数字”选项卡上,选择希望这些单元格采用的类型。按OK
  • 使用Alt+F11打开VBA编辑器
  • 用Ctrl+G打开即时窗口
  • 键入以下内容:对于所选的每个单元格:cell.formula=cell.value:next cell
  • 按enter键(您可能需要等待几秒钟)
  • 如果您在两个范围上使用相同的数据类型(例如,在步骤3中为两个范围选择“文本”)执行此操作,则您应该“将苹果与苹果进行比较”,并且您的VLOOKUP应根据需要运行

    希望这有帮助


    编辑:格式化,澄清

    @Andrew:谢谢你的回复。这绝对有效。我还需要一个人帮忙,如果我要求太多,对不起。有没有可能用宏/VBA实现这个“+”和vlookup函数?@Gaffi:谢谢你的回答。代码给了我一个错误。当我调试它时,它会突出显示以下行:YourSheet1.Range(“A1”).FormatConditions=YourSheet2.Range(“A1”).FormatConditions=YourSheet1.Range(“A1”).Font=YourSheet1.Range(“A1”).Borders=YourSheet2.Range(“A1”).Borders'设置单元格的颜色/图案YourSheet1.Range(“A1”).Interior=YourSheet2.Range(“A1”).Interior@Nupur我将VBA添加到我的帖子@Andrew:代码运行良好。我唯一的问题是,当lookup函数从工作表复制一个日期值时,它会被转换成一个奇怪的数字,例如:401289,我想这是很常见的。但当我尝试将此值的格式更改为日期排序时,它与401289保持相同。“你能告诉我怎么解决这个问题吗?”安德鲁:谢谢你的回答。这绝对有效。我还需要一个人帮忙,如果我要求太多,对不起。有没有可能用宏/VBA实现这个“+”和vlookup函数?@Gaffi:谢谢你的回答。代码给了我一个错误。当我调试它时,它会突出显示以下行:YourSheet1.Range(“A1”).FormatConditions=YourSheet2.Range(“A1”).FormatConditions=YourSheet1.Range(“A1”).Font=YourSheet1.Range(“A1”).Borders=YourSheet2.Range(“A1”).Borders'设置单元格的颜色/图案YourSheet1.Range(“A1”).Interior=YourSheet2.Range(“A1”).Interior@Nupur我将VBA添加到我的帖子@Andrew:代码运行良好。我唯一的问题是,当lookup函数从工作表复制一个日期值时,它会被转换成一个奇怪的数字,例如:401289,我想这是很常见的。但是什么时候