在一个已经排好顺序的EXCEL表中插入若干行,怎么样重新进行快速签单的基本顺序排好顺序,一共有五千多行。

丁香园App是丁香园社区的官方应用,聚合了丁香园论坛和丁香客的精彩内容。医生可通过丁香园App浏览论坛,也可以在这个医生群集的关系网络中分享和互动,建立更广泛的学术圈子。
扫描二维码下载
今日:55 | 主题:159422
每发1个新帖可以获得0.5个丁当奖励
【求助】EXCEL表格里的行如何自动按照另一个顺序重排
楼层直达:
这个帖子发布于2年零283天前,其中的信息可能已发生改变或有所发展。
有没有高手知道EXCEL表格里的行如何自动按照另一个顺序重排?手头有一个5000行的数据,有名称标注(左表)。需要按照右边的行数标记的顺序来重排,也就是说把左表里第2排,第1905排,第613排,第2385排…依次整理到一个新表中,因为有上千行,又是完全无序的,人工一个个找来粘贴很费事,这种要整理的表又有十几份,所以想找个自动化一点的方法。有没有办法?万分感谢
分享到哪里?
这个用EXCEL似乎不太好做。如果用ACCESS做,会简单的多。1。你建一个空白数据库,把表1(原数据)导入,名称设为表1。2。把表2(排列顺序要求的)也导入,名称设为表2。导入时,设定主键为自动编号,目的是万一有变化,还可以用这个自动编号来排序。3。然后在关系中,把表1与表2建立关系,就是那个用来作排列顺序的列的名称。这一步主要目的是防止表1和表2中的数据不对称,比如表1中有的,表2中没有等情况。4。建立1个查询,把表1与表2联合起来。然后把这个查询导出成EXCEL表就可以了。快的话,几分钟就可以做好啦。
分享到哪里?
linjingdr edited on
如果2个表中的相关数值完全相等,也就是说GENE ID与GENE NAME是完全相同的,彼此一个不多,一个不少。也可以用EXCEL实现:1。把表2(排列依据)的那个表,先增1列,标题为序号,按次序填入1、2、3......(这个是可以自动完成的)。然后按GENE NAME排序。把表1按GENE ID排序,这样2个表中的数据就是相对应的了,顺序完全一样啦。2。然后把表1中的内容复制到表2内,放在对应的后面。再把表2按前面增加的序号排列,恢复GENE NAME原来的排序就可以啦。
分享到哪里?
linjingdr edited on
这有何难啊
分享到哪里?
左表为SHEET1,右表SHEET2ALT+F11 打开VBA编程界面建立一个循环,按SHEET2对应列的顺序对SHEET1的对应行加标记1,2,3......然后重新排序SHEET2,OK
分享到哪里?
山水约定 edited on
能用VBA 写代码的,谁问你这个问题啊。你得考虑别人的实际状况吧,嘿嘿。你把代码贴出来倒是可以。
分享到哪里?
感谢各位的回复。我也找到个其他好用的办法,用VLOOKUP函数直接在excel里实现。VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)原理就是在“table_array”的范围内,找“lookup_value”所指定的文字内容,函数会去找这个内容在哪一行,然后返回这一行中第“col_index_num”列的数据。下面是我使用的一个例子,可以完成自动填充,仅供参考,数据需要根据具体来改。=VLOOKUP($B4006,$D$2:$GV$4000,E$4005,TRUE)
分享到哪里?
关于丁香园关于C语言程序设计中的一个题目(已经排好的序的数组插入数后重新排列,该如何处理_怎么让多关键字搜索出来的结果按输入关键字的先后顺序来排序_文件按指定多少大小分块传送有关问题__脚本百事通
稍等,加载中……
^_^请注意,有可能下面的2篇文章才是您想要的内容:
关于C语言程序设计中的一个题目(已经排好的序的数组插入数后重新排列,该如何处理
怎么让多关键字搜索出来的结果按输入关键字的先后顺序来排序
文件按指定多少大小分块传送有关问题
关于C语言程序设计中的一个题目(已经排好的序的数组插入数后重新排列,该如何处理
关于C语言程序设计中的一个题目(已经排好的序的数组插入数后重新排列有一个已经排好的序的数组,及今输入一个数,要求按原来排序的规律将它插入数组中。
#include &stdio.h&
a[11]={1,4,6,9,13,16,19,28,40,100};
printf( "array
for(i=0;i &10;i++)
printf( "%5d ",a[i]);
printf( "\n ");
printf( "insert
scanf( "%d ",&num);
if(num& a[9])
for(i=0;i &10;i++)
if(a[i]& num)
for(j=9;j& =i;j--)
a[j+1]=a[j];
printf( "now,array
for(i=0;i &11;i++)
printf( "%5d ",a[i]);
printf( "\n ");
我要问的是。。。
if(num& a[9])
不是a[10]最大吗?
既然都定义了a[11],为什么不是a[10]呢?
插入的数num比a数组最后一个数大,讲其插入的数放在a数组末尾...
但是为什么是a[9]呢?。。。
for(j=9;j& =i;j--)
a[j+1]=a[j];
这段也不是很懂。。。------解决方案--------------------for(j=9;j& =i;j--)
a[j+1]=a[j];
这段也不是很懂。。。
-----------------------------------
if(num& a[9])
//num比a[9]大则num插入到最后
for(i=0;i &10;i++)
//如果num比a[9]小则从第一个数开始比较
if(a[i]& num)
//只到num比a[i]小则将num插入到a[i]
for(j=9;j& =i;j--)
//要把num插入到a[i]就必须把a[i]到a[9]的所有数依次后移一位
a[j+1]=a[j];
------解决方案--------------------呵呵,这很简单呀。
你要先分析下算法。
对于向一个排序好的数组中插入数字,我们需要考虑两种情况:
第一:正常插入。即要插入的数字不比最大的数字大,先让比插入数字大的都向后移动,
然后再让数字插入相应的位置。
第二:非正常插入。即要插入的数字比最大的数字大,这时候不需要移动数字,只需要
直接把数字放在最大数字的后面一个里面就可以了。
你所问的就是第二种情况的处理。
因为a[9]里面存的是最大的数字,如果要插入的数字大于a[9]那么我们则需要,让a[9]
后面的元素a[10]等于要插入的数字。
所以也就有了上的语句
if(num& a[9])
怎么让多关键字搜索出来的结果按输入关键字的先后顺序来排序
如何让多关键字搜索出来的结果按输入关键字的先后顺序来排序?比如说,我搜索时输入的关键字是 "CC
BB ",那么,在输出结果的时候,要求先输出包含CC的,然后输出包含AA的,最后是包含BB的,,就是说是按输入关键字的先后顺序来排序,这样子如何实现?
我用的是ACCESS,下面是我现在搜索用的代码:
keyword=request.Form( "keyword ")
keyword=Ltrim(Rtrim(keyword))
instr(keyword, "
split(keyword, "
ubound(str)
'% "&str(i)& "% ' "
'% "&str(i)& "% ' "
sqlstr= "select
sqlstr= "select
if------解决方案--------------------如果你想对多列排序的话,那么在列与列之间要加上逗号,比如 :
  SELECT employee_id, dept, name, age, salary
  FROM employee_info
  WHERE dept =
  ORDER BY salary, age DESC;
所以你只需要把你的关键字组合成一个字符串
strKey = key(1) &
", " & key(2) ....
然后放入sql语句中即可
------解决方案--------------------可以在查询之间使用 UNION 运算符,以将查询的结果组合成单个结果集。
SELECT employee_id, dept, name, age, salary
  FROM employee_info
  WHERE dept =
'Sales ' and a like
SELECT employee_id, dept, name, age, salary
  FROM employee_info
  WHERE dept =
'Sales ' and a like
不知道这样行不行?
文件按指定多少大小分块传送有关问题
文件按指定多少大小分块传送问题我现在将文件通过网络clientscoket控件向服务器发送文件,比如一个小于4K的文件,直接一次传送掉,大于4K的文件,如:50K的文件,但我要将文件进行4K切分传送,每传4K字节后,将会收到服务器serversocket传过来“OK”确认指令,再进行下一个4K的传送,直到传完整个文件,我写了个代码,在clientSocket 读事件中收到OK指令后,就将全局标准变量赋1,然后在主程序中进行判断,标志位正确,则进行下一个4K的传输,但有问题,请各位指点一下,谢谢。
int iFileH
int iFileL
int iBytesR
int position=0;
char *pszB
iFileHandle = FileOpen("D:\\test.txt ",fmOpenRead);
iFileLength = FileSeek(iFileHandle,0,2);
Label3-&Caption=IntToStr(iFileLength); //显示文件的大小字节数
FileSeek(iFileHandle,0,0);
pszBuffer = new char[iFileLength+1];
if (iFileLength&4097)
//如果文件小于4K字节,直接发送
FileRead(iFileHandle, pszBuffer, iFileLength);
ClientSocket_Send(pszBuffer);
{ Form1-&file_ok=1;
//在FORM中的一个收到应答的标志变量,这个标志变量会在socket收到应答数据后置1
((position=position+4096)&iFileLength)&&(Form1-&file_ok==1) )
//position=position+4096;
Form1-&file_ok=0;
FileSeek(iFileHandle,position-4096,0);
iBytesRead = FileRead(iFileHandle, pszBuffer, 4096); //读4K文件
ClientSocket_Send(pszBuffer);
//发4K文件
for (i=0;i&10;i++)
Sleep(100);//延时
Application-& ProcessMessages();
if (Form1-&file_ok==1)
FileSeek(iFileHandle,position-4096,0);
//发送零头文件
iBytesRead = FileRead(iFileHandle, pszBuffer,iFileLength-position+1 ); //读4K文件
ClientSocket_Send(pszBuffer);
FileClose(iFileHandle);------解决方案--------------------
你应该在第一次传送开始的时候先把文件的长度传给接收端,接收的时候把接收的字节相加,判断文件是否传完.
------解决方案--------------------
你的意思是不是你每次发文件的最后总是多发一次???那你检查你的发送的循环,是不是计算错了,比如你这里position=position-4;
FileSeek(iFileHandle,position-4,0); //发送零头文件 //ShowMessage(IntToStr(iFileLength-position));这个地方为什么要减个4呢
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:

我要回帖

更多关于 lol怎么快速重新连接 的文章

 

随机推荐