EXCEL的vba问题太多了!达人请进

来源:百度知道 编辑:UC知道 时间:2024/06/25 12:47:40
有一列数据,我想粘到另一张工作表中,成为一行,用"选择性粘贴"中的转置就可以.但我想在这一行中每两个数据间插一个空单元格.怎么才能办到呢? 最好用VBA设置一个按钮,一点就完成这种转换.可以吗?
在这里面我看了下, oaharnold和 xsm4296后面的公式测试通过。但我想要的是两个数据间有空单元格。也就是隔一个数空一个。不是隔两个。希望能改进一下哦!另外,是如何控制是哪个指定列的转换呢?

代码可以更简单。
根据你的要求,这样代码就更简单了。

设原数据在Sheets(1)第m列 从 第a行到第b行
需要复制到Sheets(2)的第n行,从第c列开始。
Sub aaa()
k=0
for I=a to b
Sheets(2).Cells(n, I+k+c-a) = Sheets(1).Cells(I, m)
k=k+1
next I
End sub
请根据需要自己填上m,n,a,b,c就ok了

jkcrow 可能用惯了2007,没有注意到256列的限制,
如果还在用2003的人会出问题。

xsm4296能用函数解决不错。
公式没测试过,方法学习了。
但说法我不同意。
如果你试过1个工作簿中有上万个各类公式。
就知道什么叫慢了。
方法各有千秋,要看情况。
还要看各人对excel的掌握程度和偏好。
好像没人能100%都通吧。

不难,录一个宏即可,等下我发代码,如果你有代码,请发上来

宏代码(没有调试合并单元格情况,只能简单单列(行)转置):
Dim MyClip As New CClipboard
Sub Macro1()
Dim a() As String
Dim TempStr As String
TempStr = MyClip.GetText()
a() = Split(TempStr, Chr(13))
a() = Split(a(0), Chr(9))

Dim TempCol As Integer
Dim TempRow As Integer

TempCol = Selection.Column
TempRow = Selection.Row
For i = 0 To UBound(a()