Excel中,找到列的第一个和最后一个单元格条目,并使用该列作为另一行的位置

Excel中,找到列的第一个和最后一个单元格条目,并使用该列作为另一行的位置,excel,vba,Excel,Vba,问题是我有很多行,每行中有一个字符串名,表示X个列。 我想找到这些起始列和结束列,并将结果写入同一列不同行的单元格中。期望输出在开始日期和结束日期列中 我尝试使用If和counta函数,计算具有值的列的长度,然后以某种方式尝试“向上”到日期行,并将它们写入开始日期和结束日期单元格。我有点纠结如何在excel中实现这一点 对于D列的最后一个单元格,您可以使用它来获取最后一个行号: Range("D" & Rows.Count).End(xlUp).Row 对于D列的第

问题是我有很多行,每行中有一个字符串名,表示X个列。 我想找到这些起始列和结束列,并将结果写入同一列不同行的单元格中。期望输出在开始日期和结束日期列中

我尝试使用If和counta函数,计算具有值的列的长度,然后以某种方式尝试“向上”到日期行,并将它们写入开始日期和结束日期单元格。我有点纠结如何在excel中实现这一点


对于D列的最后一个单元格,您可以使用它来获取最后一个行号:

Range("D" & Rows.Count).End(xlUp).Row
对于D列的第一个单元格,由于您不希望从第1行开始(如果我没有弄错的话),您可以检查值,直到从D2开始的非空字符串:

   RowIndex = 1
   Do
    RowIndex = RowIndex + 1
    cellValue = Range("D" & RowIndex).Value
   Loop While cellValue = ""
Sub-relative_-fill()
范围(“A2”)。选择
ActiveCell.SpecialCells(xlLastCell)。选择
lr=ActiveCell.Row
lc=(ActiveCell.Column+1)
i=2
而我
选择
A4:B4
并根据需要填写

如果您的表格可能更宽,请将公式中的列
M
名称替换为一个足够远的列,以便始终包含表格,如果需要,甚至可以使用
XFD

    Sub relative_fill()
Range("A2").Select
ActiveCell.SpecialCells(xlLastCell).Select
lr = ActiveCell.Row
lc = (ActiveCell.Column + 1)
i = 2
While i <= lr
r = -(i - 1)
Cells(i, 1).Select
Selection.End(xlToRight).Select
ActiveCell.Offset(r, 0).Select
Selection.Copy
Cells(i, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Cells(i, lc).Select
Selection.End(xlToLeft).Select
ActiveCell.Offset(r, 0).Select
Selection.Copy
Cells(i, 2).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
i = i + 1
Wend
End Sub
start Date: A4: =INDEX($D$1:$M$1,MATCH(TRUE,LEN($D4:$M4)>0,0))
end date:   B4: =LOOKUP(2,1/(LEN($D4:$M4)>0),$D$1:$M$1)