我有一个包含以下列的Excel工作簿 示例:
1st Col | 2nd Col | 3rd Col | .... | nth Col | n+1 col | n+2 col
1) ABC | DEFG | HIJKLM | .... | NOPQ | FJKAM | MMESVS
2) RSTUV | WX | YZAB | .... | WGFWGW | OISNDDA | KMAM
我需要转换/创建一个带有字符位置的文本文件(.txt
)。文本文件中应该有两种情况......第一种情况是......
第一列应该有5个位置但是列(ABC)只有3个字符因此2个字符位置应该是空白的,字符应该从第50个位置开始然后第2个列应该有6个位置但是列(DEFG)有只有4个字符,因此2列应该是空白的,字符应该从第60个位置开始...
同样第n列(NOPQ)值应该在相同条件的第3行中出现(字符位置应该有8但只占用4个字符,其余字符位置应为空白,并且字符应从第75位开始)...最后n + 1列(FJKAM)值有6个字符,但只占用4个字符,其余字符位置应为空白,但必须在第6行,并且字符应从第150个位置开始......
在1个场景结束后,第二个场景应该以相同的上述条件开始
文本文件看起来应该是(将其视为字符位置)
ABC DEFG HIJKLM
NOPQ FJKAM
MMESVS
RSTUVWX YZAB
WGFWGW OISNDDA
KMAM
感谢并感谢您立即做出回应..
Sub Character postion()
Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long
LastCol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
CellData = ""
FilePath = Application.DefaultFilePath & "\Charposition.txt"
Open FilePath For Output As #2
For i = 1 To LastRow
For j = 1 To LastCol
If j = LastCol Then
For i =1 to LastRow
For j = 0 To LastCol
CellData = CellData + Trim(ActiveCell(i, j).Value)
Else
CellData = CellData + Trim(ActiveCell(i, j).Value)
End If
Next j
Write #2, CellData
CellData = ""
Next i
Close #2
End Sub()
答案 0 :(得分:1)
如果您没有任何逻辑映射或长度公式,则应单独定义每列长度:
'.....
For j = 1 To LastCol
Select Case j
Case 1
n = 5 - Len(Trim(ActiveCell(i, j).Value))
Case 2
n = 8 - Len(Trim(ActiveCell(i, j).Value))
'.....
End Select
CellData = CellData "|" &space(n)&Trim(ActiveCell(i, j).Value)
Next j
此处,Space(n)
会添加n
个空格。 'n'被计为列的固定长度 - 现有文本的长度。
我使用"|"
作为单元格的分隔符。如果你不需要它,你可以跳过。
CellData = CellData "|" &space(n)&Trim(ActiveCell(i, j).Value)
将在单元格值之前(左侧)添加空格;
CellData = CellData "|" &Trim(ActiveCell(i, j).Value)&space(n)
将在单元格值(右侧)之后添加空格;