Excel 复制值而不是公式,但保留前导零
我想从封闭的工作簿复制工作表(正常工作)我想将唯一的值而不是公式复制到活动工作簿中,这样当我将工作簿另存为.csv时,由于原始工作表的单元格中有公式或其他内容,所以在结尾处不会出现逗号(,,,)行 我试过:Excel 复制值而不是公式,但保留前导零,excel,vba,Excel,Vba,我想从封闭的工作簿复制工作表(正常工作)我想将唯一的值而不是公式复制到活动工作簿中,这样当我将工作簿另存为.csv时,由于原始工作表的单元格中有公式或其他内容,所以在结尾处不会出现逗号(,,,)行 我试过: Set sourceBook = Workbooks.Open(fileName) sourceBook.Sheets("Access Request Spreadsheet").value.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sh
Set sourceBook = Workbooks.Open(fileName)
sourceBook.Sheets("Access Request Spreadsheet").value.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).value
sourceBook.Close`
但这是一个错误。
要复制的范围可能总是不同的…但是有没有一种简单的方法可以只复制值,或者当我另存为.csv时,删除
,,,,,
,,,,
,,,,
,
谢谢
---更新----
好的,我可以在副本中剥离公式,现在当我保存为.csv时,它的末尾没有多余的、、、行
现在的问题是,它正在从我列中的数字中删除前导零。数字的长度可能不一致,因此不能设置为“0000000”
我的代码是:
Set sourceBook = Workbooks.Open(fileName)
With ThisWorkbook
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Temp"
End With
With sourceBook.Sheets("Access Request Spreadsheet").UsedRange
ThisWorkbook.Sheets("temp").Range("A1").Resize( _
.Rows.Count, .Columns.Count) = .value
End With
sourceBook.Close
我尝试了.value.NumberFormat=“@”
有什么想法吗
我的输出正在截断我的学生ID,应该是
001234
05432
1284
致:
1234
5432
1284
如前所述,问题是不同的学校具有不同的ID字段长度,因此无法将其设置为预定义的长度
复制到新工作表并删除公式时,是否可以将值保留为文本
我试过:
With sourceBook.Sheets("Access Request Spreadsheet").UsedRange
ThisWorkbook.Sheets("temp").Range("A1").Resize( _
.Rows.Count, .Columns.Count) = .value.NumberFormat = "@"
End With
但它会抛出错误:(
干杯!只需分别执行[1]格式化和[2]复制。
.value.NumberFormat=“@”
不是有效的VBA语法;您必须首先定义目标范围的数字格式:-)
您可以尝试使用ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)进行
。Value=.Value以结束,谢谢您的帮助!现在我面临的一个问题是,复制值只是对前导零进行条带化。是否有一种方法可以将值或作为文本复制,并保留前导零,而不让cvs将公式视为nul或、、或?(我编辑了上面的帖子来帮助说明我的意思。)您好@T.M.谢谢您,但是将.NumberFromat=“@”放在.value前面确实有效,并通过转换为文本来保留前导零,但我认为我回到了原来的问题,即公式在保存为.csv时被视为空,因此我剩下的行是:(逗号)这就是.value试图只复制值的原因,但它会去掉前导零。所以,我只想复制值并转换为文本…看起来文本首先会导致问题。至少当我通过调试器时看起来是这样的。感谢您建议给出一些源列和目标列的示例数据(例如A:B列),并描述您在源数据中的公式所在位置。-@80年代
' [1] format as text
ThisWorkbook.Worksheets("temp").Range("A1").Resize( _
.Rows.Count, .Columns.Count).NumberFormat = "@"
' [2] copy values
ThisWorkbook.Worksheets("temp").Range("A1").Resize( _
.Rows.Count, .Columns.Count) = .Value