q*******n 发帖数: 360 | 1 昨晚发出去之后没想到大家这么热心,真心谢谢大家的帮助,尤其是蝗虫!
看样子还是我没有说清楚,数据太大了,传不上去。我做个简单的例子你们看看。
Sheet1
------------------------
A1 B1 C1
A2 B2 C2
A3 B3 C3
------------------------
在A2处输入温度值(30),在C2处输入测试值(496),其他的数值不用管。这样
Sheet1就变成
Sheet1
------------------------
A1 B1 C1
30 B2 496
A3 B3 C3
------------------------
Sheet2是这样子的:
-------------------------
Sheet2
------------------------
30 B1 C1
31 B2 C2
32 B3 C3
------------------------
其中第一列就是预设的温度场值,C列是空闲的
问题就是:如何使Sheet1中在C2处输入的那个496自动地找到Sheet2中的C1位置,并保
证在Sheet1中输入下一组的数据时,该值还是存在Sheet2中C1这个位置上?
(1),使用vlookup可以保证第一步,找到位置是没有问题的,但是输入下一组数据时
,Sheet2 中C1处的值就不见了。
(2),确定Sheet2中C1的位置,因为该位置中的温度值是30,这个和Sheet1中在A2处
输入的温度一致。
不知道这次我说明白了没有?在线等大家帮忙,没想到大家这么热心,真心感谢大家! |
n****4 发帖数: 12553 | 2 这个网搜五分钟绝对有解,你费这么大劲贴这,找乐子的爷们娘们谁仔细看啊。
【在 q*******n 的大作中提到】 : 昨晚发出去之后没想到大家这么热心,真心谢谢大家的帮助,尤其是蝗虫! : 看样子还是我没有说清楚,数据太大了,传不上去。我做个简单的例子你们看看。 : Sheet1 : ------------------------ : A1 B1 C1 : A2 B2 C2 : A3 B3 C3 : ------------------------ : 在A2处输入温度值(30),在C2处输入测试值(496),其他的数值不用管。这样 : Sheet1就变成
|
d********f 发帖数: 43471 | 3 你还是奔一个把,保证有解
--------胡汉三
【在 q*******n 的大作中提到】 : 昨晚发出去之后没想到大家这么热心,真心谢谢大家的帮助,尤其是蝗虫! : 看样子还是我没有说清楚,数据太大了,传不上去。我做个简单的例子你们看看。 : Sheet1 : ------------------------ : A1 B1 C1 : A2 B2 C2 : A3 B3 C3 : ------------------------ : 在A2处输入温度值(30),在C2处输入测试值(496),其他的数值不用管。这样 : Sheet1就变成
|
x****o 发帖数: 21566 | 4 对excel不熟,弄个redundant column D保存last C? |
K*****2 发帖数: 9308 | 5 不如发贴吧
【在 q*******n 的大作中提到】 : 昨晚发出去之后没想到大家这么热心,真心谢谢大家的帮助,尤其是蝗虫! : 看样子还是我没有说清楚,数据太大了,传不上去。我做个简单的例子你们看看。 : Sheet1 : ------------------------ : A1 B1 C1 : A2 B2 C2 : A3 B3 C3 : ------------------------ : 在A2处输入温度值(30),在C2处输入测试值(496),其他的数值不用管。这样 : Sheet1就变成
|
s*l 发帖数: 9421 | 6 当然不见了,你在sheet1重新换一组数据时,sheet2将对应sheet11里的新数据,他们
之间是动态关系,找不到的话当然是空的了。小坡的思路我认为是对的。
【在 q*******n 的大作中提到】 : 昨晚发出去之后没想到大家这么热心,真心谢谢大家的帮助,尤其是蝗虫! : 看样子还是我没有说清楚,数据太大了,传不上去。我做个简单的例子你们看看。 : Sheet1 : ------------------------ : A1 B1 C1 : A2 B2 C2 : A3 B3 C3 : ------------------------ : 在A2处输入温度值(30),在C2处输入测试值(496),其他的数值不用管。这样 : Sheet1就变成
|
w********e 发帖数: 8594 | 7 唉。哥见你这么无助,就帮你一把。也算不上最好的办法,但是行得通,而且便于你理
解。
在你进行下面的操作之前,先把你的文件备份。要是以下操作失误,数据丢了,不要怪
我。
第一步:进入EXCEL的FILES->OPTIONS->Customize Ribbon. 在右边的main tabs里勾
上Developer.点OK完事。
第二步:点DEVELOPER菜单->Record Macro.在Shortcut Key里填个快捷键,比如q.点OK
完事。
第三步:点DEVELOPER菜单->Stop Recording Macro.
第四步:按alt+f11.把以下代码拷贝到 ' Keyboard Shortcut: Ctrl+q那一行下面。不
要把End sub 给弄没了。完了关掉代码窗口,代码会自动保存。
第五步:回到Sheet1.将光标定位到第一行。按下你刚才设定好的快捷键,比如ctrl+q.
这个宏按一次快捷键只帮你转一条数据过去。
看看代码里的注释。自己触类旁通吧。
CurrentRow = ActiveCell.Row
ActiveWorkbook.Sheets("Sheet1").Cells(CurrentRow, 1).Select
' Suppose the key in in column A. Change 1 to 2 if it is in column B, 3
if C...
Key = ActiveWorkbook.Sheets("Sheet1").Cells(CurrentRow, 1)
' Suppose the variable to be pasted in sheet2 is in column C. Change 3
to 4 if it is in column D,...
VarToTransfer = ActiveWorkbook.Sheets("Sheet1").Cells(CurrentRow, 3)
' Search the first 100000 records in sheet 2. If you have more records
than this, change this number.
For i = 1 To 100000
' Suppose the key is stored in column A in sheet 2. Change 1 to 2 if
it is in column B, ...
If ActiveWorkbook.Sheets("Sheet2").Cells(i, 1) = Key Then
' If it matches the current key, paste the variable in column c.
ActiveWorkbook.Sheets("Sheet2").Cells(i, 3) = VarToTransfer
' Move to the next row in sheet 1.
ActiveWorkbook.Sheets("Sheet1").Cells(CurrentRow + 1, 1).Select
' In column j of sheet 1, show the progress.
' WARNING: column j will be overwritten. Change 10 to other
numbers if there are data in column j.
' Delete column j before each batch of operations.
ActiveWorkbook.Sheets("Sheet1").Cells(CurrentRow, 10) = "Done"
Exit For
End If
Next |
z***i 发帖数: 8285 | 8 版主开博彩吧。看最后谁帮到了楼主。。
唉。哥见你这么无助,就帮你一把。也算不上最好的办法,但是行得通,而且便于你理
解。
在你进行下面的操作之前,先把你的文件备份。要是以下操作失误,数据丢了,不要怪
我。
第一步:进入EXCEL的FILES->OPTIONS->Customize Ribbon. 在右边的main tabs里勾
上Developer.点OK完事。
第二步:点DEVELOPER菜单->Record Macro.在Shortcut Key里填个快捷键,比如q.点OK
完事。
第三步:点DEVELOPER菜单->Stop Recording Macro.
第四步:按alt+f11.把以下代码拷贝到 ' Keyboard Shortcut: Ctrl+q那一行下面。不
要把End sub 给弄没了。完了关掉代码窗口,代码会自动保存。
第五步:回到Sheet1.将光标定位到第一行。按下你刚才设定好的快捷键,比如ctrl+q.
这个宏按一次快捷键只帮你转一条数据过去。
看看代码里的注释。自己触类旁通吧。
CurrentRow = ActiveCell.Row
ActiveWorkbook.Sheets("Sheet1").Cells(CurrentRow, 1).Select
' Suppose the key in in column A. Change 1 to 2 if it is in column B, 3
if C...
Key = ActiveWorkbook.Sheets("Sheet1").Cells(CurrentRow, 1)
' Suppose the variable to be pasted in sheet2 is in column C. Change 3
to 4 if it is in column D,...
VarToTransfer = ActiveWorkbook.Sheets("Sheet1").Cells(CurrentRow, 3)
' Search the first 100000 records in sheet 2. If you have more records
than this, change this number.
For i = 1 To 100000
' Suppose the key is stored in column A in sheet 2. Change 1 to 2 if
it is in column B, ...
If ActiveWorkbook.Sheets("Sheet2").Cells(i, 1) = Key Then
' If it matches the current key, paste the variable in column c.
ActiveWorkbook.Sheets("Sheet2").Cells(i, 3) = VarToTransfer
' Move to the next row in sheet 1.
ActiveWorkbook.Sheets("Sheet1").Cells(CurrentRow + 1, 1).Select
' In column j of sheet 1, show the progress.
' WARNING: column j will be overwritten. Change 10 to other
numbers if there are data in column j.
' Delete column j before each batch of operations.
ActiveWorkbook.Sheets("Sheet1").Cells(CurrentRow, 10) = "Done"
Exit For
End If
Next
【在 w********e 的大作中提到】 : 唉。哥见你这么无助,就帮你一把。也算不上最好的办法,但是行得通,而且便于你理 : 解。 : 在你进行下面的操作之前,先把你的文件备份。要是以下操作失误,数据丢了,不要怪 : 我。 : 第一步:进入EXCEL的FILES->OPTIONS->Customize Ribbon. 在右边的main tabs里勾 : 上Developer.点OK完事。 : 第二步:点DEVELOPER菜单->Record Macro.在Shortcut Key里填个快捷键,比如q.点OK : 完事。 : 第三步:点DEVELOPER菜单->Stop Recording Macro. : 第四步:按alt+f11.把以下代码拷贝到 ' Keyboard Shortcut: Ctrl+q那一行下面。不
|
A******u 发帖数: 1279 | 9 听老夫一句劝,标用excel了。excel看似好学,其实问题多多,要实现许多简单功能需
要掌握复杂的语法和词汇。抽时间学个matlab,或者mathematica。一天就能上手。 |
d********f 发帖数: 43471 | 10 这事没法选,ms的软件对真正的developer根本没有能用的,但是美国公司的现状就是95
%的大妈或者和不如大妈的大叔在作'技术'工作
【在 A******u 的大作中提到】 : 听老夫一句劝,标用excel了。excel看似好学,其实问题多多,要实现许多简单功能需 : 要掌握复杂的语法和词汇。抽时间学个matlab,或者mathematica。一天就能上手。
|
s***v 发帖数: 4924 | 11 我好像看明白楼主的意思了,如果我没理解错的话,很简单的嘛。
楼主的意思是这样吗?
SHEET 1
A B C
1 30 496
2 34 512
3 31 500
4 33 508
5 32 504
SHEET 2
A B C
1 30 a 496
2 31 b 500
3 32 c 504
4 33 d 508
5 34 e 512
楼主是不是想说比如在sheet1中A2输入34,C2输入512,那么sheet2中A5值是34,那么
C5的值就应该是512。
你在sheet2的C列用这个公式:
=INDEX(Sheet1!$C$1:$C$5,MATCH(A1,Sheet1!$A$1:$A$5))
EDIT: 为了配合楼主的例子换sheet1和2的顺序。 |
OX 发帖数: 516 | 12 你这个初级问题,大家给了太多高级解决方案。但是你没有提供足够的细节。比如
sheet1 column a的数据是unique还是duplicate allowed。你需要把全部可能性想清楚
,列出来,再找人问。
【在 q*******n 的大作中提到】 : 昨晚发出去之后没想到大家这么热心,真心谢谢大家的帮助,尤其是蝗虫! : 看样子还是我没有说清楚,数据太大了,传不上去。我做个简单的例子你们看看。 : Sheet1 : ------------------------ : A1 B1 C1 : A2 B2 C2 : A3 B3 C3 : ------------------------ : 在A2处输入温度值(30),在C2处输入测试值(496),其他的数值不用管。这样 : Sheet1就变成
|