2013-07-02 140 views
0

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

谢谢您的帮助

UPDATE:

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 
+0

对不起..但你是什么意思** S:1 **和其他? – matzone

+0

我的意思是说,我的单元格有多个值,我想处理它们中的每一个。 (S:1 P:0 K:1 Q:1)在单元格中,我想知道S = 1与否。如果是,我想在另一个单元格中写入1 – Kaja

+0

您是否尝试过:对于工作表中的每个单元格(“Sheet1”)。Range(“S1:S10”)。Cells' 'If condition Then operation' 'Next' 这将允许你循环范围S1中的所有单元格:S10 – gpalex

回答

1

你当然可以用工作表公式做到这一点,避免VBA完全:

所以在说这个值,列AV 小号: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) 

所以这些公式查找值S:1,P:1等在列AV。如果FIND函数返回一个错误,那么0由公式返回,否则1(像IF, THEN, ELSE

那么你将公式只是复制下来列AV所有行。

HTH 菲利普

+0

感谢您的支持答案,但可能是S:有另一个数字而不是1,我想提取这个数字,即S:7我想提取7,然后在另一列 – Kaja

+0

中写入7,在这种情况下,您将构建一个搜索S ,然后使用MID功能提取号码 –

+1

@Kaja:我已更新我的代码,带上一个厕所,或选择一个适合您的答案 –

1

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

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") 
1

个别字母或符号居住在一个单细胞可以通过下面的代码插入到不同的列不同的细胞:

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

如果您不希望符号一样被插入结肠把一个如果条件在循环中。

相关问题