如何保持VLookup返回值的日期格式?

时间:2015-03-04 16:05:31

标签: excel vba formatting vlookup

我有一个工作表格式混合格式数据(日期,双,字符串等)。 我在lookup_range中搜索值(my_index),我想要检索要在其他工作表中更改单元格的数据。它运行正常,但是当VLookup返回的值是一个日期并且我将它设置为另一个表时它会丢失其日期格式。

Dim lookup_range As Range
Dim my_index, my_value As Variant

my_value = Application.VLookup(my_index, lookup_range, num_col, False)
Sheets(3).Cells(num_row, last_col_s1 + num_col - 1).Value = my_value

因此,当lookup_range中的数据为02/05/2014时,表格3中显示的数据看起来像41761

我需要在lookup_range中保留数据的原始数据格式。

6 个答案:

答案 0 :(得分:0)

VLOOKUP并不关心它返回的数据的格式 - 它返回数据,而不是格式

确保与源格式相同的唯一方法是手动或以编程方式复制/粘贴该格式。

答案 1 :(得分:0)

使用此

Sheets(3).Cells(num_row, last_col_s1 + num_col - 1).Value = cdate(my_value)

答案 2 :(得分:0)

我遇到了同样的问题,只是将VLOOKUP单元重新格式化为日期时间格式。这解决了我的问题。我不确定如何将日期时间转换为数字,但确实如此。

答案 3 :(得分:0)

我遇到了同样的问题。在vlookup之后,将格式更改为“ShortDate”格式。这将为您提供所需的信息。

答案 4 :(得分:0)

Excel公式:

=TEXT(VLOOKUP(Lookup_value,table_array,col_index_num,0),"dd-mm-yyyy")

VBA:

Sub vlookup_code()

    Dim table_rng As Range

    'FOR THE TIME BEING GIVING A LOOKUP VALUE
    look_up_value = "sekar"

    'SETTING THE TABLE ARRAY RANGE
    Set table_rng = Sheet1.Range("C3").CurrentRegion

    'SINCE VLOOKUP WILL GIVE AN ERROR, IF THE LOOKUP VALUE IS NOT PRESENT
    'TO HANDLE THIS ERROR, WE USE THE ISERROR STATEMENT
    If IsError(Application.vlookup(look_up_value, table_rng, 2, 0)) = False Then

        vlook_value = WorksheetFunction.vlookup(look_up_value, table_rng, 2, False)

        'CHANGING THE VLOOKUP VALUE FORMAT TO DATE FORMAT
        date_format = WorksheetFunction.Text(vlook_value, "dd-mm-yyyy")

    End If

End Sub

答案 5 :(得分:0)

在Microsoft Office 2016中。

将数据复制到单元格后。选择需要采用日期格式的列。右键单击>格式化单元格,转到“数字”选项卡并从下拉列表中选择日期并选择所需的日期格式,数据将转换为日期格式。