找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 742|回复: 7

[编程申请]:Excel VBA的编程求教

[复制链接]
发表于 2003-11-3 13:37:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
请问:在工作表2(Sheet2)中的A1单元格中输入101后,怎样实现在B1和C1单元格中自动出现Sheet1中101对应的C1和D1单元格中的内容。
示例文件如下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-11-3 23:07:13 | 显示全部楼层
引用另一张工作表上的单元格或区域

工作簿必须包含多张工作表 。

1、单击需要输入公式的单元格。

2、键入 =(等号)。

3、单击需要引用的工作表标签。

4、选定需要引用的单元格或单元格区域。

5、完成公式。

也可以直接在单元格B1中输入“=Sheet1!C2”。在单元格C1中输入“=Sheet1!D2”。其它的操作类似。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-11-4 13:00:12 | 显示全部楼层
这样做格式就固定了。我的意思是如果在Sheet2中的随便一个位置输入例如101后,在它的同一行的后面就会自动出现Sheet1中对应的101后的内容。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-11-4 19:29:56 | 显示全部楼层
一种是使用相对引用的方式,如:C1=OFFSET(Sheet1!B2,0,1),D1=OFFSET(Sheet1!B2,0,2)。
另一种就是使用编程来解决。如:在Sheet2中写入下面的代码,当输入101时,触发事件,在Sheet1中的第2列查找与之相等的值,如果找到,那么将它同一行之后的数据复制到Sheet2中。


  1.   [FONT=courier new]
  2. Private Const SearchColumn As Integer = 2 '要查找的列

  3. Private Sub Worksheet_Change(ByVal Target As Range)
  4.     If Target.Count <> 1 Then Exit Sub
  5.     Dim i As Integer
  6.     Dim j As Integer
  7.     For i = 1 To Sheet1.UsedRange.Rows.Count
  8.         If Sheet1.Cells(i, SearchColumn).Text = Target.Text Then
  9.             For j = SearchColumn + 1 To Sheet1.UsedRange.Columns.Count
  10.                 Target.Offset(0, j - SearchColumn) = Sheet1.Cells(i, j)
  11.             Next
  12.             Exit For
  13.         End If
  14.     Next
  15. End Sub
  16.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-11-9 13:42:07 | 显示全部楼层
我又有新的想法:
在Sheelt2中第二列输入零件号,在随后的第三列输入数量(最大不超过Sheet1中对应的数量),怎样产生如附件所示的格式;重量和数量要一一对应。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-11-9 22:47:43 | 显示全部楼层
一、将Sheet2中的重量更改为重量(kg)。
二、在Sheet2中粘贴下面的代码,


  1.   [FONT=courier new]
  2. Private Const SearchColumn As Integer = 2 '要查找的列

  3. Private Sub Worksheet_Change(ByVal Target As Range)
  4.     If Target.Count <> 1 Then Exit Sub
  5.     Dim j As Integer
  6.     Dim i As Integer
  7.     On Error Resume Next
  8.     If Target.Column = SearchColumn Then
  9.         j = GetRow(Target.Row, SearchColumn)
  10.         For i = SearchColumn + 1 To Sheet2.UsedRange.Columns.Count
  11.             Target.Offset(0, i - SearchColumn) = Sheet1.Cells(j, GetColumn(i)).Text
  12.         Next
  13.     ElseIf Target.Column = SearchColumn + 1 Then
  14.         j = GetRow(Target.Row, SearchColumn)
  15.         i = Sheet1.Cells(j, GetColumn(SearchColumn + 1)).Text
  16.         Target.Offset(0, 1) = Sheet1.Cells(j, GetColumn(SearchColumn + 2)).Text / i * Target.Text
  17.     End If
  18. End Sub

  19. Private Function GetRow(ByVal RowIndex As Integer, ByVal ColumnIndex As Integer) As Integer
  20.     Dim j As Integer
  21.     j = GetColumn(ColumnIndex)
  22.     Dim i As Integer
  23.     For i = 2 To Sheet1.UsedRange.Rows.Count
  24.         If Sheet1.Cells(i, j).Text = Sheet2.Cells(RowIndex, ColumnIndex).Text Then
  25.             GetRow = i
  26.             Exit For
  27.         End If
  28.     Next
  29. End Function

  30. Private Function GetColumn(ByVal ColumnIndex As Integer) As Integer
  31.     Dim i As Integer
  32.     For i = 1 To Sheet1.UsedRange.Columns.Count
  33.         If Sheet1.Cells(1, i).Text = Sheet2.Cells(1, ColumnIndex).Text Then
  34.             GetColumn = i
  35.             Exit For
  36.         End If
  37.     Next
  38. End Function
  39.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-9 22:59:06 | 显示全部楼层
最初由 efan2000 发布
[B]一、将Sheet2中的重量更改为重量(kg)。
二、在Sheet2中粘贴下面的代码,

[/B]


请问在Sheet2中什么地方粘贴下面的代码。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-11-10 17:35:00 | 显示全部楼层
菜单:工具-宏-VISUAL BASIC编辑器
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-20 12:54 , Processed in 0.189195 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表