2012-01-11 103 views
0

我不知道这是否可行。在excel中对表单进行排序

我有一个具有两片的工作簿时, “输入” 和 “输出”

USER1在 “输入板” 填充

列A =名
列B =年龄
C列=位置
列d =海特
..
..

然后在 “输出” 片列A为S等从列A中的值复制的“输入”片材和用户2使用用户1已经进入

列B =眼睛颜色
C栏=头发的颜色
列d =数的值更详细地填充手指
..
..

所以我希望你的想法,用户1进入一些细节,然后用户2确实与一些工作,然后在“输出纸张进入更多的细节。列A是将这两者链接在一起的“索引”值。

我的问题是,如果用户2输入了详细信息,然后返回到“输入”工作表并进行排序,“输出”工作表中的值将不再匹配,因为列A将更改为反映排序操作,其余的将保持不变。

是否可以链接工作表之间的行,或者创建将在两个工作表上运行并保持一致性的排序代码。

这不一定适用于用户尝试的临时搜索,我只想在“输入”表单上放置一个按钮,例如“按名称排序”,“按位置排序”等。

问候

亚伦

回答

1

如果您是确定与具有预设排序,一个解决方案是从片A和片B两个值镜像到片C,然后只是那种,并重新使用新的排序结果填充表A和B中的值。

I.e.

Sheet1     | Sheet 2       | Sheet 3 (Hidden and named) 
         |         | 
Name  Age etc,  | Eye Colour Hair colour etc. | =Sheet1!A1 ... =Sheet2!A1 

那么你的排序按钮将调用子是这样的:

Dim rngSortRange As Range, rngStartCell As Range, rngEndCell As Range 
Set rngStartCell = Worksheets("Sheet_3_Name_Goes_Here").Range("A1") 
Set rngEndCell = Worksheets("Sheet_3_Name_Goes_Here").Range(_ 
    rngStartCell.End(xlToRight).Column, _ 
    rngStartCell.End(xlDown).Row) 
Set rngSortRange = Worksheets("Sheet_3_Name_Goes_Here").Range(rngStartCell, rngEndCell) 
rngSortRange.Sort Key1:=<Column Number Here>, Order1:=xlAscending, Header:=xlYes 
rngSortRange.Range(rngStartCell, _ 
        Worksheets("Sheet_3_Name_Goes_Here").Range(_ 
        Worksheets("Sheet 1").Range("A1").End(xlToRight).Column, _ 
        rngEndCell.Row _ 
        ) _ 
        ).Copy 
Worksheets("Sheet 1").Paste 
rngSortRange.Range(Worksheets("Sheet_3_Name_Goes_Here").Range(
        rngStartCell.Column + Worksheets("Sheet 1").Range("A1").End(xlToRight).Column, _ 
        rngStartCell.Row _ 
        ), _ 
        rngEndCell _ 
        ).Copy 
Worksheets("Sheet 2").Paste 

这可能需要一些工作(例如,你可能需要事后重置表Sheet 3,您可能需要pastevalues而不仅仅是贴,否则你最终会粘贴自引用公式),但基本思想应该起作用。

+0

我看着这个,但为了让我想要这么多的代码,如果它需要改变 – DevilWAH 2012-01-23 16:51:12