Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel vba中读取单元格值并在另一个单元格中写入_Excel_Vba - Fatal编程技术网

在Excel vba中读取单元格值并在另一个单元格中写入

在Excel vba中读取单元格值并在另一个单元格中写入,excel,vba,Excel,Vba,我有一个Excel文件,我想读取单元格的值,即单元格包含(S:1 p:0 K:1 Q:1)我想读取每个值并将每个值保存到另一列。例如,如果S:1,则应为另一个单元格1,如何从单元格中读取数据并使用宏和vba写入另一个单元格 谢谢你的帮助 更新: Sub MacroF1() usedRowCount = Worksheets("Übersicht_2013").UsedRange.Rows.Count For i = 1 To usedRowCount cellAYvalue = Workshee

我有一个Excel文件,我想读取单元格的值,即单元格包含
(S:1 p:0 K:1 Q:1)
我想读取每个值并将每个值保存到另一列。例如,如果S:1,则应为另一个单元格1,如何从单元格中读取数据并使用宏和vba写入另一个单元格

谢谢你的帮助

更新:

Sub MacroF1()
usedRowCount = Worksheets("Übersicht_2013").UsedRange.Rows.Count
For i = 1 To usedRowCount
cellAYvalue = Worksheets("Übersicht_2013").Cells(i, "AY").Value
If InStr(cellvalue, "S: 1") <> 0 Then
Worksheets("Übersicht_2013").Cells(i, "BC") = 1
Else
Worksheets("Übersicht_2013").Cells(i, "BC") = 0
End If

If InStr(cellvalue, "P: 1") <> 0 Then
Worksheets("Übersicht_2013").Cells(i, "BD") = 1
Else
Worksheets("Übersicht_2013").Cells(i, "BD") = 0
End If

If InStr(cellvalue, "M: 1") <> 0 Then
Worksheets("Übersicht_2013").Cells(i, "BE") = 1
Else
Worksheets("Übersicht_2013").Cells(i, "BE") = 0
End If

If InStr(cellvalue, "L: 1") <> 0 Then
Worksheets("Übersicht_2013").Cells(i, "BF") = 1
Else
Worksheets("Übersicht_2013").Cells(i, "BF") = 0
End If

If InStr(cellvalue, "K: 1") <> 0 Then
Worksheets("Übersicht_2013").Cells(i, "BG") = 1
Else
Worksheets("Übersicht_2013").Cells(i, "BG") = 0
End If

If InStr(cellvalue, "Q: 1") <> 0 Then
Worksheets("Übersicht_2013").Cells(i, "BH") = 1
Else
Worksheets("Übersicht_2013").Cells(i, "BH") = 0
End If
'Worksheets("Übersicht_2013").Cells(i, "BC") = dd
'Worksheets("Übersicht_2013").Cells(i, "AY").Value
'Worksheets("Übersicht_2013").Range("BD44") = "Babak"
Next i

End Sub
Sub宏f1()
usedRowCount=工作表(“Übersicht_2013”)。UsedRange.Rows.Count
对于i=1,使用drowcount
cellAYvalue=工作表(2013年)。单元格(i,“AY”)。值
如果InStr(cellvalue,“S:1”)为0,则
工作表(“Übersicht_2013”)。单元格(i,“BC”)=1
其他的
工作表(“Übersicht_2013”)。单元格(i,“BC”)=0
如果结束
如果InStr(cellvalue,“P:1”)为0,则
工作表(“Übersicht_2013”)。单元格(i,“BD”)=1
其他的
工作表(“Übersicht_2013”)。单元格(i,“BD”)=0
如果结束
如果InStr(cellvalue,“M:1”)为0,则
工作表(“Übersicht_2013”)。单元格(i,“BE”)=1
其他的
工作表(“Übersicht_2013”)。单元格(i,“BE”)=0
如果结束
如果InStr(cellvalue,“L:1”)为0,则
工作表(“Übersicht_2013”)。单元格(i,“BF”)=1
其他的
工作表(“Übersicht_2013”)。单元格(i,“BF”)=0
如果结束
如果InStr(cellvalue,“K:1”)为0,则
工作表(“Übersicht_2013”)。单元格(i,“BG”)=1
其他的
工作表(“Übersicht_2013”)。单元格(i,“BG”)=0
如果结束
如果InStr(cellvalue,“Q:1”)为0,则
工作表(“Übersicht_2013”)。单元格(i,“BH”)=1
其他的
工作表(“Übersicht_2013”)。单元格(i,“BH”)=0
如果结束
‘工作表(2013年)’单元格(i,“BC”)=dd
‘工作表(2013年)’单元格(i,“AY”).值
‘工作表(2013年)’范围(“BD44”)=“Babak”
接下来我
端接头

您当然可以使用工作表公式来完成此操作,完全避免VBA:

所以对于这个值,比如说,列AV S:1P:0K:1Q:1

将此公式放入BC列:

=MID(AV:AV,FIND("S",AV:AV)+2,1)
那么BD列中的这些公式是

=MID(AV:AV,FIND("P",AV:AV)+2,1)
=MID(AV:AV,FIND("K",AV:AV)+2,1)
=MID(AV:AV,FIND("Q",AV:AV)+2,1)
因此,这些公式在AV列中查找值S:1p:1等。如果
FIND
函数返回错误,则公式返回0,否则返回1(就像
If,then,else

然后,只需复制AV列中所有行的公式


Philip

您当然可以使用工作表公式来实现这一点,完全避免VBA:

所以对于这个值,比如说,列AV S:1P:0K:1Q:1

将此公式放入BC列:

=MID(AV:AV,FIND("S",AV:AV)+2,1)
那么BD列中的这些公式是

=MID(AV:AV,FIND("P",AV:AV)+2,1)
=MID(AV:AV,FIND("K",AV:AV)+2,1)
=MID(AV:AV,FIND("Q",AV:AV)+2,1)
因此,这些公式在AV列中查找值S:1p:1等。如果
FIND
函数返回错误,则公式返回0,否则返回1(如
If,then,else

然后,只需复制AV列中所有行的公式


Philip

我对这个案例有这个功能

Function GetValue(r As Range, Tag As String) As Integer
Dim c, nRet As String
Dim n, x As Integer
Dim bNum As Boolean

c = r.Value
n = InStr(c, Tag)
For x = n + 1 To Len(c)
  Select Case Mid(c, x, 1)
    Case ":":    bNum = True
    Case " ": Exit For
    Case Else: If bNum Then nRet = nRet & Mid(c, x, 1)
  End Select
Next
GetValue = val(nRet)
End Function
填充单元格BC..(假设选中单元格A1)


我对这个案子有这个功能

Function GetValue(r As Range, Tag As String) As Integer
Dim c, nRet As String
Dim n, x As Integer
Dim bNum As Boolean

c = r.Value
n = InStr(c, Tag)
For x = n + 1 To Len(c)
  Select Case Mid(c, x, 1)
    Case ":":    bNum = True
    Case " ": Exit For
    Case Else: If bNum Then nRet = nRet & Mid(c, x, 1)
  End Select
Next
GetValue = val(nRet)
End Function
填充单元格BC..(假设选中单元格A1)


单个单元格中的单个字母或符号可以通过以下代码插入到不同列中的不同单元格中:

For i = 1 To Len(Cells(1, 1))
Cells(2, i) = Mid(Cells(1, 1), i, 1)
Next

如果不希望插入冒号等符号,请在循环中放入If条件。

可以通过以下代码将单个单元格中的单个字母或符号插入到不同列中的不同单元格中:

For i = 1 To Len(Cells(1, 1))
Cells(2, i) = Mid(Cells(1, 1), i, 1)
Next

如果您不想插入冒号之类的符号,请在循环中放入一个If条件。

对不起..但S:1和其他是什么意思?我的意思是,我有一个具有多个值的单元格,我想处理每个值。(S:1 p:0 K:1 Q:1)在一个单元格中,我想知道S=1与否。如果是,我想在另一个单元格中写1。您是否尝试过:
用于工作表(“Sheet1”)中的每个单元格。范围(“S1:S10”).单元格
如果条件满足,则操作
下一步
这将允许您在S1:S10范围内的所有单元格中循环。我刚刚更新了我的代码,您是否有更好的主意来执行此操作job@Kaja…我的回答可能会有帮助..对不起..但是S:1和其他是什么意思?我的意思是,我有一个有多个v的电池值,我想处理它们中的每一个。(S:1 P:0 K:1 Q:1)在一个单元格中,我想知道S=1与否。如果是,我想在另一个单元格中写入1。您是否尝试过:
用于工作表(“Sheet1”)中的每个单元格。范围(“S1:S10”).单元格
如果条件满足,则操作
下一步
这将允许您在S1:S10范围内的所有单元格中循环。我刚刚更新了我的代码,您是否有更好的主意来执行此操作job@Kaja…我的答案可能会有帮助..谢谢你的回答,但可能是S:请用另一个数字代替1,我想提取这个数字,即S:7,我想提取7,然后在另一列中写入7,在这种情况下,您将构建一个搜索S的公式,然后使用MID函数提取number@Kaja:我已经更新了密码,换了一个厕所,或者选择了一个适合你的答案谢谢你的答案,但可能是S:用另一个数字代替1,我想t要提取这个数字,即S:7,我想提取7,然后在另一列中写入7。在这种情况下,您将构建一个搜索S的公式,然后使用MID函数提取number@Kaja:我已经更新了密码,换了个厕所,或者选择了适合你的答案