Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 搜索行a日期,标识开始日期和结束日期,将行中的单元格从开始日期合并到结束日期_Date_Merge_Calendar_Range_Cells - Fatal编程技术网

Date 搜索行a日期,标识开始日期和结束日期,将行中的单元格从开始日期合并到结束日期

Date 搜索行a日期,标识开始日期和结束日期,将行中的单元格从开始日期合并到结束日期,date,merge,calendar,range,cells,Date,Merge,Calendar,Range,Cells,我到处寻找例子来指导我开发日历电子表格。客户有非常具体的指导方针 包含事件详细信息的前11列设置为筛选器 第1行当前为空,但将用于标题 第2行从K列到无穷大(BXY)是年份 从K列到BXY列的第3行是月份 K列到BXY的第4行是当天 其他说明: 单元格K6的日期为2018年7月1日。 第4行中的所有单元格继续为=K$6+1..等。 使用以下公式计算周数: =CONCATENATE("WEEK ", IF((IF(MONTH(K6)>=10, WEEKNUM(K6)-WEEKNUM(DATE

我到处寻找例子来指导我开发日历电子表格。客户有非常具体的指导方针

  • 包含事件详细信息的前11列设置为筛选器
  • 第1行当前为空,但将用于标题
  • 第2行从K列到无穷大(BXY)是年份
  • 从K列到BXY列的第3行是月份
  • K列到BXY的第4行是当天
  • 其他说明: 单元格K6的日期为2018年7月1日。 第4行中的所有单元格继续为=K$6+1..等。 使用以下公式计算周数:

    =CONCATENATE("WEEK ", IF((IF(MONTH(K6)>=10, WEEKNUM(K6)-WEEKNUM(DATE(YEAR(K6),10,1))+1, 53-WEEKNUM(DATE(YEAR(K6)-1,10,1))+WEEKNUM(K6)))=53,1,(IF(MONTH(K6)>=10, WEEKNUM(K6)-WEEKNUM(DATE(YEAR(K6),10,1))+1,53-WEEKNUM(DATE(YEAR(K6)-1,10,1))+WEEKNUM(K6)))))
    
    计算第2行中的所有单元格:

    =YEAR($K$6)
    
    现在来谈谈我的困境。我正在编写一个userform,以便用户输入填充电子表格中下一个空行的所有数据。我不能发布这样做的代码,因为它是在一个专有的计算机系统上。但是,填充过滤器范围A到J的代码运行良好。此代码查找下一个空行:

    lastRow = ws.Cells.Find(What:="*", LookIn=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
    
    作为表单的一部分,用户输入事件的开始日期和结束日期。我试图在第4行中搜索开始日期和结束日期,合并开始日期和结束日期之间的所有单元格,并将事件标题插入合并的单元格

    这是我到目前为止搜索第4行的代码:

    For Each eventDate In .Range("K$4:BXY$4)
    If IsDate(eventDate.Value) = IsDate(Me.tbStartDate.Value) Then
    .Cells(lastRow, eventDate.Address(RowAbsolute:=True, ColumnAbsolute:=False)).Value = Me.tbEventName.Value
    End If
    Next eventDate
    
    我是excel编程新手,实际上只是一个业余程序员。我在工作中被赋予了这个任务,并且一直在阅读和研究我试图做的事情的例子……但都没有用

    我正在考虑修改此代码段以使其生效:

    For iCounter = myLastRow To myFirstRow Step -1
    If .Cells(iCounter, myCriteriaColumn).Value = myCriteria Then 
    .Range(.Cells(iCounter, myFirstColumn), .Cells(iCounter, myLastColumn)).Merge
    Next iCounter
    
    为此:

    LastCol = sh.Cells.Find(What:="*", After:=sh.Range("A1"), Lookat:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False).Column
    
    对于如何实现这一目标的任何帮助和指导,我们将不胜感激

    v/r
    Dusty

    我想出来了,可能不是最好的解决方案,但它很有效:

    lastRow = .Cells.Find(What:="*",_
        LookIn:=xlFormulas,_
        LookAt:=xlPart,_
        SearchOrder:=xlByRows,_
        SearchDirection:=xlPrevious).Row + 1
    eventName = Me.tbID.Value + " " +_
        Me.tbOpName + " " +_
        Me.tbStartDate.Value + "-" +_
        Me.tbEndDate.Value
    startDate = Format(Me.tbStartDate.Value, "dd-mmm-yyyy;@")
    endDate = Format(Me.tbEndDate.Value, "dd-mmm-yyyy;@")
    
    For startCol = 14 to 959
        startDateColumn = Format(.Cells(6, startCol).Value, "dd-mmm-yyyy;@")
    
        If StrComp(startDate, startDateColumn, vbTextCompare) = 0 Then
            For endCol = 14 to 959
                endDateColumn = Format(.Cells(6, endCol).Value, "dd-mmm-yyyy;@")
                If StrComp(endDate, endDateColumn, vbTextCompare) = 0 Then
                    .Range(.Cells(lastRow, startCol), .Cells(lastRow, endCol)).Merge
                    .Cells(lastRow, startCol).Value = eventName
                    Exit For
                End If
            Next endCol
         End If
    Next startCol