我正在为我的邻居做一个目录。我们从之前的目录中获得了大部分信息。输入的信息:A1名称,B1地址和C1电话号码; B1名称,B2地址,C2电话号码等。发布者希望以不同格式的信息A1名称,A2地址,A3电话号码,A4空白; A5名称,A6地址,A7电话号码,A8空白等...是否有一种简单(或哎 - 一种不那么容易)的方式让Excel更改信息的格式而无需我输入1300个家庭信息?
我还需要第二次将信息重新格式化为纵横交错。该格式为:A1街道名称,A2地址编号,B2居民姓名和C2电话号码。
我正在为我的邻居做一个目录。我们从之前的目录中获得了大部分信息。输入的信息:A1名称,B1地址和C1电话号码; B1名称,B2地址,C2电话号码等。发布者希望以不同格式的信息A1名称,A2地址,A3电话号码,A4空白; A5名称,A6地址,A7电话号码,A8空白等...是否有一种简单(或哎 - 一种不那么容易)的方式让Excel更改信息的格式而无需我输入1300个家庭信息?
我还需要第二次将信息重新格式化为纵横交错。该格式为:A1街道名称,A2地址编号,B2居民姓名和C2电话号码。
Answers:
将此宏添加到您的Excel,并在选择包含您的地址数据的工作表时运行“MyTranspose”。
Option Explicit
'Copy all the data from the active sheet into a new worksheet
' and transpose all the columns into a single column
Sub MyTranspose()
Dim r As Range
Dim wsNew As Worksheet
Dim wsCurrent As Worksheet
Set wsCurrent = ActiveSheet
Set wsNew = Worksheets.Add(Before:=Sheets(1))
For Each r In wsCurrent.UsedRange.Rows
r.Copy
wsNew.Cells(LastRowOnWS(wsNew, 1) + 2, 1).PasteSpecial Transpose:=True
Next r
Application.CutCopyMode = False
Set wsCurrent = Nothing
Set wsNew = Nothing
End Sub
'Find the last row used in column 'col'
Function LastRowOnWS(ByVal ws As Worksheet, _
Optional ByVal col As Long = 1) As Long
LastRowOnWS = ws.Cells(65536, col).End(xlUp).Row
End Function
第一个 - 将数据表转换为单个列,每个记录分隔空行 - 我实际上是在Word中。将数据复制并粘贴到Word中,使用Tab作为列分隔符将表转换为文本,将每个现有的段落标记替换为两个段落标记(^ p with ^ p ^ p),用段落标记替换每个选项卡(^ t with ^ p),并将结果复制并粘贴回Excel。
对于第二项任务,如果地址的格式是通常的美国方式 - 123 Main Street - 那么您需要使用Excel的文本操作功能从街道名称中分割出地址编号。如果地址在B列(并且总是有一个空格将数字与街道分开),那么在D1中,放置
=Trim(Left(B1,Find(" ",B2)))
在E1中,放
=Trim(Right(B1,Len(B1)-Len(D1)))
并填写。然后,和以前一样,使用Word战略性地用段落标记替换选项卡以获得所需的排列。
如果它是愚蠢但它的作用,它不是愚蠢的。:)
操作excel连接工具应该有所帮助
这个问题更好地属于http://superuser.com,但是因为你在SO中问过,这是一个编程讨论网站......
我肯定会做以下事情:
学习这样的工具对每个人都有利,而不仅仅是程序员!