F*******n 发帖数: 182 | 1 1,
有两个excel文件, 比如一个文件名:abc.xlsx,另一个:def.xlsx
现在需要在def.xlsx文件中,A1 输入第一个excel的文件名 abc,就能自动将 abc.
xlsx 中 B2~B100 的数据自动导入到 def.xlsx 中 A2~A100
请问用什么函数能做到?
2,
上面那个问题,如果第一个文件名可能是 abc-xxxx.xlsx 其中 xxxx 根据不同情况有
可能不一样,位数也不一样。还是在def.xlsx文件中,A1 处只输入 abc 而不是完整的
文件名,如何能达到问题1 的目的?
(也就是说有没有类似于通用符的东西,不如说 * 号,这样我只要在A1 处输入 abc,
就能从文件名以 abc 开头的文件中导入数据。)
谢谢 |
f****s 发帖数: 236 | 2 should use Macro, not function. |
h****c 发帖数: 10494 | |
q********n 发帖数: 3248 | 4 用indirect(),具体如下:
1.在同一目录下存这两个文件。打开。
2.在abc文件内的B1,输入="[def.xlsx]Sheet1!$A$",B2-B100,输入相应2-100。
3.在abc文件内的A2,输入=INDIRECT($B$1&B2),把公式拉下去。
第二个问题应该比较类似,替换文件名即可。 |
p********n 发帖数: 3367 | |
n***y 发帖数: 2730 | 6 还是自己写vba macro吧,不然用function写的这种spreadsheet很fragile, 稍不小心
就出毛病。 |
q********n 发帖数: 3248 | 7 呵呵,一两个function就能解决的事,非要用macro。也是,码工不把问题搞复杂了,
靠什么忽悠吃饭呢? |
n***y 发帖数: 2730 | 8 你去打听一下,那个码工会写VBA Macro?
【在 q********n 的大作中提到】 : 呵呵,一两个function就能解决的事,非要用macro。也是,码工不把问题搞复杂了, : 靠什么忽悠吃饭呢?
|
S****M 发帖数: 2198 | 9 Excel能不用vba就不用难道不是共识么?
【在 n***y 的大作中提到】 : 还是自己写vba macro吧,不然用function写的这种spreadsheet很fragile, 稍不小心 : 就出毛病。
|
p********6 发帖数: 22 | 10 Google "Excel indirect() function".
【在 F*******n 的大作中提到】 : 1, : 有两个excel文件, 比如一个文件名:abc.xlsx,另一个:def.xlsx : 现在需要在def.xlsx文件中,A1 输入第一个excel的文件名 abc,就能自动将 abc. : xlsx 中 B2~B100 的数据自动导入到 def.xlsx 中 A2~A100 : 请问用什么函数能做到? : 2, : 上面那个问题,如果第一个文件名可能是 abc-xxxx.xlsx 其中 xxxx 根据不同情况有 : 可能不一样,位数也不一样。还是在def.xlsx文件中,A1 处只输入 abc 而不是完整的 : 文件名,如何能达到问题1 的目的? : (也就是说有没有类似于通用符的东西,不如说 * 号,这样我只要在A1 处输入 abc,
|
|
|
R*****n 发帖数: 355 | |
D********n 发帖数: 978 | 12 同意这位的说法。
【在 n***y 的大作中提到】 : 还是自己写vba macro吧,不然用function写的这种spreadsheet很fragile, 稍不小心 : 就出毛病。
|
n***y 发帖数: 2730 | 13 不是!过多的link和function会使spreadsheet无法maintain。
【在 S****M 的大作中提到】 : Excel能不用vba就不用难道不是共识么?
|
j******g 发帖数: 197 | 14 not 码农。just have too much free time on my hand...
第一个问题:
附注:
1. 在DEF文件里,打开sheet1, B1 是 要选择的文件名; C1 是 所选文件的路径
2. ABC 和 DEF 文件不需要在同一个文件夹里
3. DEF文件,因为要加入VBA,所以要另存为xlsm
4. 数据源的文件ABC等,不能先打开
打开DEF文件, Hit "Alt+F11", 建个module,Paste the following code:
Sub Mitbbs_Move_Data_Q1()
Workbooks.Open Filename:=Cells(1, 3).Value
Sheets(1).Select
Range(Cells(2, 2), Cells(200, 2)).Select
Selection.Copy
Workbooks("DEF.xlsm").Activate
Sheets(1).Select
Range("B2").Select
ActiveSheet.Paste
End Sub
只打开 DEF.xslm, run this VBA subroutine.
第二个问题:
ABC文件有 ABC-0001, ABC-0002, ABC-0003 .... ABC-0010
在 DEF 文件的 sheet1 上,从column B 开始,依次向右 paste 0001, 0002 到 0010
的数据 (B2-B200)。
在DEF文件 sheet1 的A1,填ABC,B1开始,依次填好 0001, 0002到0010
B2里写这个公式 =concatenate($A$1,"-",B1) ,公式从B2复制到K2。
其它都一样,Use the following code
Sub Mitbbs_Move_Data_Q2()
Dim FName As String
For i = 1 To 10
FName = Cells(2, 1 + i).Value
Workbooks.Open Filename:=FName
Sheets(1).Select
Range(Cells(2, 2), Cells(200, 2)).Select
Selection.Copy
Workbooks("DEF.xlsm").Activate
Sheets(1).Select
Range(Cells(3, 1 + i)).Select
ActiveSheet.Paste
Workbooks.Close Filename:=FName
Next i
End Sub |
j******g 发帖数: 197 | |
D******n 发帖数: 2836 | 16 both VBA and Links are error prone.
【在 S****M 的大作中提到】 : Excel能不用vba就不用难道不是共识么?
|