1

我有一个 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
4

3 回答 3

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

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

HTH 菲利普

于 2013-07-02T10:13:49.260 回答
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")
于 2013-07-02T10:44:19.873 回答
1

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

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

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

于 2013-07-02T11:55:13.170 回答