Excel 如何根据VBA中另一个工作表的条件,逐个更改工作表的特定值?
我想根据另一张名为“data”的工作表中的数据,将“breakdown”工作表中击穿电压列的值(无论何时为1E+17)更改为正确的值 条件是每当“数据”工作表中每列电流中的前电流/后电流或后电流/前电流>=1000时,我将记录其相应的电压,并在“击穿”工作表中替换不正确的数据 我的程序为“细分”工作表中突出显示的点提供0 图1(“数据”工作表)Excel 如何根据VBA中另一个工作表的条件,逐个更改工作表的特定值?,excel,vba,Excel,Vba,我想根据另一张名为“data”的工作表中的数据,将“breakdown”工作表中击穿电压列的值(无论何时为1E+17)更改为正确的值 条件是每当“数据”工作表中每列电流中的前电流/后电流或后电流/前电流>=1000时,我将记录其相应的电压,并在“击穿”工作表中替换不正确的数据 我的程序为“细分”工作表中突出显示的点提供0 图1(“数据”工作表) 之前(“细分”工作表) 我想要(“分解”工作表) 我的代码: Sub test() Dim correctvbd As Long Dim a A
之前(“细分”工作表)
我想要(“分解”工作表)
我的代码:
Sub test()
Dim correctvbd As Long
Dim a As Long
Dim lastrow As Long
lastrow = Sheets("Breakdown").Range("C" & Sheets("Breakdown").Rows.Count).End(xlUp).Row
i = 2
starting = 3
j = starting ' STARTING POINT FOR READING voltage
Do While Sheets("data").Cells(j, i) <> ""
If Sheets("data").Cells(j, i) / Sheets("data").Cells(j - 1, i) >= 1000 Or _
Sheets("data").Cells(j - 1, i) / Sheets("data").Cells(j, i) >= 1000 Then
correctvbd = Sheets("data").Cells(j - 1, i - 1) 'record the point where correct Breakdown voltage is found
Exit Do
Else
j = j + 1 'continue to search for Breakdown voltage down the row for that column if it is not found yet
End If
For a = 1 To lastrow
If Sheets("Breakdown").Cells(a, 3).Value = 1E+17 Then
Sheets("Breakdown").Cells(a, 3).Value = correctvbd
End If
Next
Loop
' the upper five lens for sensor
i = i + 2 ' NEXT data point for next set of data data
j = starting 'Starting point for next set of voltage data
End Sub
子测试()
将VBD校正为长
暗淡如长
最后一排一样长
lastrow=工作表(“细分”).范围(“C”和工作表(“细分”).行.计数).结束(xlUp).行
i=2
启动=3
j=读取电压的起始点
“不要在工作表(“数据”)。单元格(j,i)””
如果图纸(“数据”)单元格(j,i)/图纸(“数据”)单元格(j-1,i)>=1000或_
表格(“数据”)。单元格(j-1,i)/表格(“数据”)。单元格(j,i)>=1000
correctvbd=表(“数据”)。电池(j-1,i-1)记录找到正确击穿电压的点
退出Do
其他的
j=j+1'如果尚未找到,则继续在该列的行下搜索击穿电压
如果结束
对于a=1到最后一行
如果表(“细分”)。单元格(a,3)。值=1E+17,则
表(“细分”)。单元格(a,3)。值=校正的VBD
如果结束
下一个
环
'传感器的上五个透镜
i=i+2'下一组数据的下一个数据点
j=下一组电压数据的起始点
端接头
我认为您的问题可能是,您正在定义correctvdb long:
Dim correctvbd As Long
可能是双倍的。
此外,我认为该行缺少结尾处的.value
correctvbd = Sheets("data").Cells(j - 1, i - 1)
我认为您的问题可能是,您正在定义VDB long:
Dim correctvbd As Long
可能是双倍的。
此外,我认为该行缺少结尾处的.value
correctvbd = Sheets("data").Cells(j - 1, i - 1)
对不起,还有问题。如果您必须更正某些内容:
correctvbd=Sheets(“data”).Cells(j-1,i-1).Value
。您的exit do
跳过行Sheets(“细分”)。单元格(a,3)。Value=correctedVBD
到循环中,因此不会写入任何值。抱歉,还有更多问题。如果您必须更正某些内容:correctvbd=Sheets(“data”).Cells(j-1,i-1).Value
。您的exit do
跳过行Sheets(“细分”)。单元格(a,3)。Value=correctedvbd
到循环中,因此不会写入任何值。