使用VBA根据设置的字符数

时间:2016-05-30 02:02:02

标签: string excel vba excel-vba

我已经使用VBA大约一年了,我还在学习它能做些什么。我有一个csv文件需要在数据安排中进行更改才能导入到软件中。到现在为止我一直没事。但显然导入的一个特定列正在遇到问题。

该软件仅导入列中数据的前15个字符。我正在使用的人员希望数据拆分,相应列中的前15个字符和辅助列中的溢出。我做了一些研究,只提出了两个选择。使用text to column函数或使用split string函数。我看到分裂字符串的问题是我需要一个分隔符,但我需要使用我必须在char 15和16之间分割的事实,因为每个数据点中没有重复分隔符。这让我的文字留给了允许固定宽度的列。但我遇到了另一个问题。 Char 16可能是一个空间。我测试使用char 16空格将文本运行到列,并且函数删除了导入所需的空格。

我不知所措。有没有办法在char 15和amp之间分割一个字符串? 16并保留char 16处的任何空格?

VBA编码位于Excel 2007工作簿中。

为了显示一些代码而不是它对我目前的情况有多大影响。

Dim i As Integer
i = 1
ActiveWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
'Insert headers
Sheets(2).Cells(1, 1).Value = "Company"
Sheets(2).Cells(1, 2).Value = "Division"
Sheets(2).Cells(1, 3).Value = "Style" 
Sheets(2).Cells(1, 4).Value = "Label" 

Do While Sheets(1).Cells(i, 1) <> ""  'Insert data
Sheets(2).Cells(i + 1, 1).Value = "LP"
Sheets(2).Cells(i + 1, 2).Value = Sheets(1).Cells(i, 3).Value
Sheets(2).Cells(i + 1, 3).Value = Sheets(1).Cells(i, 30).Value 'Needs first 15 char
'Sheets(2).Cells(i + 1, 4).Value = 'currently blank 'Needs char 16 and beyond
i= i + 1
Loop

1 个答案:

答案 0 :(得分:0)

您可以尝试Mid功能

Dim i As Integer
i = 1
ActiveWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
'Insert headers
Sheets(2).Cells(1, 1).Value = "Company"
Sheets(2).Cells(1, 2).Value = "Division"
Sheets(2).Cells(1, 3).Value = "Style" 
Sheets(2).Cells(1, 4).Value = "Label" 

Do While Sheets(1).Cells(i, 1) <> ""  'Insert data
Sheets(2).Cells(i + 1, 1).Value = "LP"
Sheets(2).Cells(i + 1, 2).Value = Sheets(1).Cells(i, 3).Value
Sheets(2).Cells(i + 1, 3).Value = Mid(Sheets(1).Cells(i, 30).Value, 1, 15) 'Needs first 15 char
Sheets(2).Cells(i + 1, 4).Value = Mid(Sheets(1).Cells(i, 30).Value, 16) 'currently blank 'Needs char 16 and beyond
i= i + 1
Loop