Excel 读取一个单元格中的数据并写入另一个单元格

Excel 读取一个单元格中的数据并写入另一个单元格,excel,vba,Excel,Vba,我有一个Excel文件,我想读取单元格中的每个值。。。i、 e列B第2行中的单元格可以包含(“1-10-11-15-17”)或(“1-10-11-15-17”),连字符之间可以有空格,也可以没有空格。我想读取每个数字,并将每个值作为数字1保存在同一行的另一列中。例如,我的B列第2行数据是(“1-10-11-15-17”)或(“1-10-11-15-17”),我想在C、L、M、Q和S列的同一行2上写一个值1作为值1。如何使用宏或VBA从一个单元格读取数据并写入另一个单元格 提前感谢您的帮助, 玫瑰

我有一个Excel文件,我想读取单元格中的每个值。。。i、 e列B第2行中的单元格可以包含(“1-10-11-15-17”)或(“1-10-11-15-17”),连字符之间可以有空格,也可以没有空格。我想读取每个数字,并将每个值作为数字1保存在同一行的另一列中。例如,我的B列第2行数据是(“1-10-11-15-17”)或(“1-10-11-15-17”),我想在C、L、M、Q和S列的同一行2上写一个值1作为值1。如何使用宏或VBA从一个单元格读取数据并写入另一个单元格

提前感谢您的帮助, 玫瑰


编辑:

这只是一个前代码

Sub Macro1() 
RowCount = Worksheets("2013").UsedRange.Rows.Count 
For i = 2 To RowCount cellvalue = Worksheets("2013").Cells(i, "B").Value 
    If InStr(cellvalue, "1") = 1 Or InStr(cellvalue, "1") > 2 And InStr(cellvalue, "1") < 22 Then 
        Worksheets("2013").Cells(i, "C") = Null 
    ElseIf InStr(cellvalue, "10") <> 0 Then Worksheets("2013").Cells(i, "L") = 1 
    ElseIf InStr(cellvalue, "11") <> 0 Then 
        Worksheets("2013").Cells(i, "M") = 1 
    ElseIf InStr(cellvalue, "12") <> 0 Then 
        Worksheets("2013").Cells(i, "N") = 1 
    Else Worksheets("2013").Cells(i, "C") = Null 
    End If
Sub宏1()
RowCount=工作表(“2013”)。UsedRange.Rows.Count
对于i=2到RowCount cellvalue=工作表(“2013”)。单元格(i,“B”)。值
如果InStr(cellvalue,“1”)=1或InStr(cellvalue,“1”)>2且InStr(cellvalue,“1”)<22,则
工作表(“2013”)。单元格(i,“C”)=空
ElseIf InStr(cellvalue,“10”)0然后是工作表(“2013”)。单元格(i,“L”)=1
ElseIf InStr(cellvalue,“11”)0然后
工作表(“2013”)。单元格(i,“M”)=1
ElseIf InStr(cellvalue,“12”)0然后
工作表(“2013”)。单元格(i,“N”)=1
Else工作表(“2013”)。单元格(i,“C”)=空
如果结束
编辑:

这应该是你想要的

For i = 2 To RowCount
    cellString = Cells(i, 2).Value
    cellString = Replace(cellString, " ", "") 'This finds and removes any spaces from your string
    numbers = Split(cellString, "-") 'Splits remaining values into array delimited by the dash character

    Cells(i, numbers(1)).Value = 1 'Now the column is the number stored in the array
    Cells(i, numbers(2)).Value = 1 'The array starts at index 2 because of the above For loop
    Cells(i, numbers(3)).Value = 1
    Cells(i, numbers(4)).Value = 1
    Cells(i, numbers(5)).Value = 1

Next i

B2是(“1-10-11-15-17”)或(“1-10-11-15-17”)。C2是1对1。L2是1对10。M2是11的1。Q2是15的1。S2是1表示17。您希望在分配新值的单元格中看到什么?C2应该是“1:1”吗?"1-1"? “一对一”?另外,您是否尝试过任何代码?如果是这样,您得到了什么错误?这只是codeSub Macro1()RowCount=工作表(“2013”)的一个ex。使用RowCount.Rows.Count For i=2到RowCount cellvalue=工作表(“2013”)。Cells(i,“B”)。如果InStr(cellvalue,“1”)=1或InStr(cellvalue,“1”)>2和InStr(cellvalue,“1”)<22,则工作表(“2013”)。Cells(i,“C”)=Null-ElseIf InStr(cellvalue,“10”)0然后工作表(“2013”)。单元格(i,“L”)=1个ElseIf InStr(cellvalue,“11”)0然后工作表(“2013”)。单元格(i,“M”)=1个ElseIf InStr(cellvalue,“12”)0然后工作表(“2013”)。单元格(i,“N”)=1个ElseIf InStr(“2013”)。单元格(i,“C”)=Null End如果问题是我需要将字符串识别为数字,这样它就不会将数字1、数字15、14或19作为1与它在字符串中的位置值混淆。下面是b2中的另一个数据单元格(“11-14-16-18-19”)它不承认11是11,它认为一旦它看到1,那么1就会进入C列第2行。检查编辑,现在应该做你想做的。你是对的,我没有很好地阅读我自己的代码。在你做了更改后,它现在工作了吗?如果是,请接受答案,如果不是,请解释什么不工作。注释remove formatting.编辑您的问题,您将能够显示表格样式的数据。感谢您的帮助,我编辑了您的代码Thunderblaster并能够完成我的项目!RowCount=工作表(“2013”)。UsedRange.Rows.Count for I=2 to RowCount cellvalue=工作表(“2013”)。Cells(I,“B”)。Value cellString=cellvalue cellString=替换(cellString,“,”)'这会从字符串numbers=Split(cellString,“-”)中查找并删除任何空格。它会将剩余的值拆分为由短划线字符A=(numbers(0))B=(numbers(1))C=(numbers(2))D=(numbers(3))E=(numbers(4))分隔的数组。这不是完整的代码