我最近使用此代码在另一个电子表格中帮助我解决了这个问题:
BYTE a[] = { 0x01, 0x02, 0x03, 0x04 };
BYTE b[] = { 0x02, 0x03 };
if (mem_in_mem(a, b, 4 * sizeof(BYTE)) == 0) {
printf("b is in memory range of a\n");
}
在我最初使用时,此代码通过选择A1确定表格的尺寸,找到" A"正在使用中,选择列中的相邻单元格" B"并且在代码已经开始的A2附近填充以B2结尾的单元格。当重新使用此代码执行相同的任务时,它将从" B1"这是一个问题,因为它会将我的标题一直填充到工作表底部而不是公式。
我之前使用的代码没有任何问题。我已将其粘贴在下面,以防其他人注意到我的做法有所不同或错误。谢谢你的帮助!
Range("B2").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-1],'Unapplied Report'!R[-1]:R[15],2,FALSE)"
Range("A2").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Select
Range(Selection, Selection.End(xlUp)).Select
Selection.FillDown
答案 0 :(得分:0)
我想先修改一下你的代码。从长远来看,这应该有所帮助,特别是在试图找到问题时。将来,请尽量避免选择/激活或激活参考。
Range("B2").FormulaR1C1 = _
"=IF(ISNUMBER(MATCH(RC[-1],Conveyance,0)),""Conveyance"",IF(ISNUMBER (MATCH(RC[-1],NonConveyance,0)),""Non-Conveyance"",IF(ISNUMBER(MATCH(RC[-1],VA,0)),""VA Claim"",IF(ISNUMBER(MATCH(RC[-1],USDA,0)),""USDA Claim"",IF(ISNUMBER(MATCH(RC[-1],PMI,0)),""PMI Claim"",IF(ISNUMBER(MATCH(RC[-1],SFLS,0)),""SFLS Claim"",""Not Found""))))))"
Range("A2").End(xlDown).Offset(0, 1).Select 'Looks like a jumble here trying to offset
Range(Selection, Selection.End(xlUp)).FillDown
请注意我在您的代码中的评论。看起来有些“选择”错误传达。让我们尝试用一些更明确的代码来修复你:
Dim LR as Long 'LR = Last row
LR = Cells(Rows.Count, "A").End(xlUp).Row 'Finds last row in column A
Range("B2").FormulaR1C1 = _ 'Your previous formula
"=IF(ISNUMBER(MATCH(RC[-1],Conveyance,0)),""Conveyance"",IF(ISNUMBER (MATCH(RC[-1],NonConveyance,0)),""Non-Conveyance"",IF(ISNUMBER(MATCH(RC[-1],VA,0)),""VA Claim"",IF(ISNUMBER(MATCH(RC[-1],USDA,0)),""USDA Claim"",IF(ISNUMBER(MATCH(RC[-1],PMI,0)),""PMI Claim"",IF(ISNUMBER(MATCH(RC[-1],SFLS,0)),""SFLS Claim"",""Not Found""))))))"
Range("B2:B"&LR).Filldown
这应该有助于更清楚地定义正在发生的事情。