可以将一行字符分成数字之前和之后的程序

时间:2011-08-08 20:31:21

标签: c# excel vba

示例:

“美国介入性疼痛医师协会指导委员会成员,2006年至今” 会成为... “美国介入性疼痛医师协会指导委员会成员” 和“2006年至今”

我想知道: A)什么语言最适合这个,如何解析或拆分,如何从Excel电子表格(而不是简单的文本框或console.read)中取出,然后放回到Excel中,在两个不同的细胞中。

2 个答案:

答案 0 :(得分:2)

由于您使用的是Excel,因此最好使用VBA。下面是一些代码,它们将遍历A列中的每个单元格,并将它们分成第一个数字。

Sub SplitCells()

Dim i As Long
Dim j As Long
Dim lastRow As Long
Dim currentValue As String

lastRow = cells(Rows.count, "A").End(xlUp).row

For i = lastRow To 1 Step -1
    currentValue = cells(i, "A").Value
    For j = 1 To Len(currentValue)
        If IsNumeric(Mid$(currentValue, j, 1)) = True Then
            cells(i + 1, "A").EntireRow.Insert
            cells(i, "A").Value = Left$(currentValue, j - 1)
            cells(i + 1, "A").Value = Mid$(currentValue, j)
            Exit For
        End If
    Next
Next

End Sub

工作原理:向后循环列是非常重要的,因此当您插入行时,您不会弄乱循环。它只是查看每个单元格中的第一个数值,当它找到一个时,它会将其拆分,将数值放在新行之后,将该部分从当前单元格中删除。你可以改变你想要的范围。

答案 1 :(得分:0)

使用C# - 声明一个类似这样的类

public class Info
{
    private string _status;
    private string _committee;
    private string _comName;
    private string _dateperiod;

    public string getFormattedvalue
    {
        get 
        {
            return _status +", "+
                _committee +", "+
                _comName;
        }
    }

    public string formattedDate
    {
        get
        {
            return _dateperiod;
        }
    }

    public Info(string input)
    {
        string[] s = input.Split(',');
        _status = s[0];
        _committee = s[1];
        _comName = s[2];
        _dateperiod = s[3];
    }

}