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

时间:2013-07-02 08:56:43

标签: excel excel-vba 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 = 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

3 个答案:

答案 0 :(得分:2)

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

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

你把这个公式放在BC栏中:

=MID(AV:AV,FIND("S",AV:AV)+2,1)

然后这些公式在BD,BE ......列中

=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:1 P:1 等。如果FIND函数返回错误,则公式返回0,否则为1(如IF, THEN, ELSE

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

HTH 菲利普

答案 1 :(得分:2)

我对这种情况有这个功能..

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)

Worksheets("Übersicht_2013").Cells(i, "BC") = GetValue(range("A1"),"S")

答案 2 :(得分:1)

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

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

如果你不希望插入像冒号这样的符号,请在循环中放入if条件。