使用Excel VBA将一年中的所有日期转换为多个字符串

时间:2016-06-03 10:15:02

标签: string excel-vba date vba excel

我必须编写一个vba代码,将一年中的所有日期转换为一周中的日期,例如。星期一,星期二,星期三......星期日和一周内所有日子的价值例如.Monday必须是字符串格式。 (见图片插入)

http://i.imgur.com/V9LyxpG.png

我尝试使用.NumberFormat函数,但它不起作用,因为格式仍然是日期格式,尽管显示的值是正确的(请查看F10的公式栏)。以下是我写的代码:

Sub convertdate()

Range("A7:A371").Copy 
'copy all the dates throughout the year'

Range("F7:F371").PasteSpecial xlPasteFormulasAndNumberFormats 
'paste it into F column'

Worksheets("Sheet1").Range("F7:F371").NumberFormat = "dddd" 
'convert the dates into days'

Sum1 = Application.SumIf(Range("F7:F371"), "Monday", Range("B7:B371")) 
'example of calculating the total rainfall of all Mondays throughout the year'

Worksheets("Sheet1").Range("G22").FormulaArray = Sum1

End Sub

来自单元格F7:F371的公式栏应显示字符串值“星期一”,“星期二”等,具体取决于日期而不是日期本身。将其转换为字符串的原因是它可以用于稍后使用SUMIF函数计算所有星期一,星期二等的总降雨量。

感谢是否有人可以提供帮助。谢谢。

2 个答案:

答案 0 :(得分:3)

公式可以做到这一点 在单元格F7中输入=TEXT(A7,"dddd")并向下拖动 这将格式化日期以将全天名称显示为字符串 https://support.office.com/en-us/article/TEXT-function-20d5ac4d-7b94-49fd-bb38-93d29371225c

答案 1 :(得分:2)

尝试这样的事情。它将循环遍历A列中的所有日期(从第7行开始)并将关联的工作日名称放在F列中:

Sub test()

Dim i As Long
Dim lRow As Long

    With ActiveSheet

        lRow = .Cells(.Rows.Count, 1).End(xlUp).Row

        For i = 7 To lRow

            .Cells(i, 6).Value = WeekdayName(Weekday(.Cells(i, 1).Value, 1), False, 1)

        Next i

    End With

End Sub