小春网

 找回密码
 注册账号
楼主: 陈酿
收起左侧

[IT 交流] 这段VBA代码怎么实现

[复制链接]
 楼主| 发表于 2011-11-30 13:59:39 | 显示全部楼层
sundf 发表于 2011-11-29 22:33
还是不大明白你想做什么,Descolumncount又是什么?参数?
表头位置怎么找,非空字符算吗?
随便写了个func ...

相乘到第Descolumncount列为止。
回复

使用道具 举报

 楼主| 发表于 2011-11-30 14:05:53 | 显示全部楼层
本帖最后由 陈酿 于 2011-11-30 19:32 编辑

ext.rar (8.1 KB, 下载次数: 5)

sundf 发表于 2011-11-29 22:33
还是不大明白你想做什么,Descolumncount又是什么?参数?
表头位置怎么找,非空字符算吗?
随便写了个func ...



Descolumncount 是倒数第三列,在这个case里边,当然Descolumncount是动态的
回复

使用道具 举报

 楼主| 发表于 2011-11-30 15:38:57 | 显示全部楼层
陈酿 发表于 2011-11-30 00:26
十分感谢,我研究一下

其实就是 有
两张表,sheet1和sheet2,
现在把sheet1第二行的第二列开始到第X列数据复制到内存中。与sheet2第二行的2第二列开始到第X列数据相乘,并且结果显示在Exterior里边
回复

使用道具 举报

 楼主| 发表于 2011-11-30 19:33:36 | 显示全部楼层
sundf 发表于 2011-11-28 22:56
好抽象的要求呀。每个sheet里有几张表?还是对三本excel操作?

取Interior 从第二行第二列到Descolumncount-1列的所有行数据和从Enterior competition复制好的新表Remark里的数据相乘,结果表示在Remark表里 附件已经更新
回复

使用道具 举报

发表于 2011-11-30 22:02:40 | 显示全部楼层
那我之前发给你的稍微改下就可以了吧。
本来要找表的位置的,按你这样,只要从cells(2,2)开始就可以了。
把里面的StartRow ,StartCol改成2,2就可以了
回复

使用道具 举报

 楼主| 发表于 2011-11-30 22:40:47 | 显示全部楼层
sundf 发表于 2011-11-30 22:02
那我之前发给你的稍微改下就可以了吧。
本来要找表的位置的,按你这样,只要从cells(2,2)开始就可以了。
把 ...

一会儿到了下半夜不忙的时候改改看,十分感谢。
回复

使用道具 举报

发表于 2011-11-30 22:43:26 | 显示全部楼层
陈酿 发表于 2011-11-30 22:40
一会儿到了下半夜不忙的时候改改看,十分感谢。

下半夜才不忙啊。。。
お疲れさん[.4C11C.]
回复

使用道具 举报

 楼主| 发表于 2011-12-1 10:55:18 | 显示全部楼层
sundf 发表于 2011-11-30 22:43
下半夜才不忙啊。。。
お疲れさん

一直忙到早晨啊,一直没合眼
回复

使用道具 举报

 楼主| 发表于 2011-12-1 21:31:36 | 显示全部楼层
sundf 发表于 2011-11-30 22:43
下半夜才不忙啊。。。
お疲れさん

改错了,。。。。表头读了,剩下的做,不知道改错哪里了
回复

使用道具 举报

发表于 2011-12-1 22:11:44 | 显示全部楼层
陈酿 发表于 2011-12-1 21:31
改错了,。。。。表头读了,剩下的做,不知道改错哪里了

我把你的附件改了,还是不知道你的是多少,5?
把原来的remark sheet改个名字就可以了,不知道和你的要求一致吗。

Sub Remark()

Dim myRng As Range
Dim i As Long
Dim j As Long
Dim ret

Worksheets("Exterior competition").Copy after:=Worksheets("Exterior competition")
    ActiveSheet.Name = "Remark"
    Worksheets("Remark").Activate
    ActiveCell.CurrentRegion.Select
ret = dosheet("Interior competition", "Exterior competition", "Remark", 5)
End Sub


Function dosheet(sheet1 As String, Sheet2 As String, sheet3 As String, descount As Integer)

Dim StartRow, StartCol, EndRow, EndCol, tmpr, tmpc As Integer
EndRow = Sheets(sheet1).Cells.SpecialCells(xlLastCell).Row
EndCol = Sheets(sheet1).Cells.SpecialCells(xlLastCell).Column

StartRow = 2
StartCol = 2

For tmpr = StartRow To EndRow
    For tmpc = StartCol To EndCol
        'descount-1为止相乘
        If tmpc < descount Then
            Sheets(sheet3).Cells(tmpr, tmpc) = Sheets(sheet1).Cells(tmpr, tmpc) * Sheets(Sheet2).Cells(tmpr, tmpc)
        Else
        '其他COPY
            Sheets(sheet3).Cells(tmpr, tmpc) = Sheets(sheet1).Cells(tmpr, tmpc)
        End If
    Next
Next
End Function

评分

参与人数 1 +88 收起 理由
憨吃迷糊睡 + 88 很给力

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小春网
常务客服微信
微信订阅号
手机客户端
扫一扫,查看更方便! 快速回复 返回顶部 返回列表