VBScript 将 excel 中的列值相乘并将结果粘贴到不同的列中
VBScript to multiply column values in excel and paste the results in different column
我正在尝试使用 VBScript 来执行下面的 excel 函数
B=A:A * 0.5
这就是将 A 列中的所有值乘以 0.5,然后将这些值粘贴到 B 列中。我想在 Excel 之外执行此操作。
在@GarysStudent 的回答的帮助下,我能够在原始列 A 列中进行乘法和粘贴操作。理想情况下,我想将相乘结果粘贴到 B 列中。
下面是在同一列内乘法和粘贴值的 VBScript 代码
Imports Excel = Mircosoft.Office.Interop.Excel
Public Class Form1
Dim objExcel, objXLWorkbook, objXLWS, RNGE, LNG, lRow, nRow
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
objExcel = CreateObject("Excel.Application")
objXLWorkbook = objExcel.Workbooks.Open("C:\filename.xlsx")
objXLWS = objXLWorkbook.Worksheets(1)
objExcel.Visible = True
'Adding Helper Cell to hold the multiplication value
objXLWS.Range("Z100") = 0.5
With objXLWS
LNG = .Cells(.Rows.Count, "A").End(Excel.XlDirection.xlUp).Row
RNGE = .Range("A2:A" & LNG)
.Range("Z100").Copy()
RNGE.PasteSpecial(Excel.XLPasteType.xlPasteAll, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationMultiply)
End With
End Sub
End Class
如果您知道数据的大小,则可以使用 for 循环,如果不知道,则可以使用 do while:
Dim x As Double
x = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count
For i = 1 To x
Cells(i, 2).Value = Cells(i, 1).Value * 0.5
Next
这可行,但有点慢,它会计算您有多少条目,然后循环遍历。不过,我建议使用电子表格功能来提高速度。
此示例使用单元格 Z100 作为 "helper" 单元格:
Sub DEMO()
Dim r As Range, N As Long
Range("Z100").Value = 0.5
N = Cells(Rows.Count, "A").End(xlUp).Row
Set r = Range("A1:A" & N)
Range("Z100").Copy
r.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
End Sub
我正在尝试使用 VBScript 来执行下面的 excel 函数
B=A:A * 0.5
这就是将 A 列中的所有值乘以 0.5,然后将这些值粘贴到 B 列中。我想在 Excel 之外执行此操作。
在@GarysStudent 的回答的帮助下,我能够在原始列 A 列中进行乘法和粘贴操作。理想情况下,我想将相乘结果粘贴到 B 列中。
下面是在同一列内乘法和粘贴值的 VBScript 代码
Imports Excel = Mircosoft.Office.Interop.Excel
Public Class Form1
Dim objExcel, objXLWorkbook, objXLWS, RNGE, LNG, lRow, nRow
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
objExcel = CreateObject("Excel.Application")
objXLWorkbook = objExcel.Workbooks.Open("C:\filename.xlsx")
objXLWS = objXLWorkbook.Worksheets(1)
objExcel.Visible = True
'Adding Helper Cell to hold the multiplication value
objXLWS.Range("Z100") = 0.5
With objXLWS
LNG = .Cells(.Rows.Count, "A").End(Excel.XlDirection.xlUp).Row
RNGE = .Range("A2:A" & LNG)
.Range("Z100").Copy()
RNGE.PasteSpecial(Excel.XLPasteType.xlPasteAll, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationMultiply)
End With
End Sub
End Class
如果您知道数据的大小,则可以使用 for 循环,如果不知道,则可以使用 do while:
Dim x As Double
x = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count
For i = 1 To x
Cells(i, 2).Value = Cells(i, 1).Value * 0.5
Next
这可行,但有点慢,它会计算您有多少条目,然后循环遍历。不过,我建议使用电子表格功能来提高速度。
此示例使用单元格 Z100 作为 "helper" 单元格:
Sub DEMO()
Dim r As Range, N As Long
Range("Z100").Value = 0.5
N = Cells(Rows.Count, "A").End(xlUp).Row
Set r = Range("A1:A" & N)
Range("Z100").Copy
r.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
End Sub