ppip: 流浪的天空

以群,以独

Archive for the ‘excel’ tag

如何在Excel里面实现折行打印?

with 5 comments

  一个小问题:如果我有一个Excel表,列数非常的多(比如说有二十列),以至于在一张纸上横着打不下,想折行打印,也就是把一行打成两行,或者更多行,应该怎么做?(而且这个表非常大,不考虑纯手工操作)

———————— 先想后看 ————————

  我的答案,用一个VBA来做一个复制。我对VBA不是很熟,尤其对于VBA复杂的对象体系感到头晕,因此花了一天半的时间来看文档,还翻了一本叫《Excel 2003高级VBA编程宝典》的书,才写出这么几句。VBA基本的语法其实不麻烦,麻烦还在于找到正确的对象和属性。现代语言似乎都是这样?应用层面上体系比算法重要。

Sub SheetToPrint()
Application.ScreenUpdating = False
' 停止屏幕刷新
For i = 1 To Worksheets("Sheet1").Range("a1", Range("a65535").End(xlUp)).Count
' 这个是从第一行到最后一行的遍历,VBA的这个写法是挺奇怪的。
Worksheets("Sheet1").Cells(i, 1).Copy Worksheets("Sheet2").Cells((i - 1) * 3 + 1, 1)
' 然后采用单元格对单元格的拷贝,以便于控制。虽然麻烦,其实复制一下就OK了。
' 省略单元格拷贝操作若干
Next i
Application.ScreenUpdating = True
End Sub

  然后是丫头的答案,不用Excel,只需要用排序就搞定了。丫头真是聪明的不得了!步骤如下:
  1、如果是折两行的话,构造一个包含1, 3, 5, … , 2n-1, 2, 4, 6, …, 2n 的列。 n和要拷贝的行数相同。
  2、把要折行的两部分前后分别拷贝到这个构造的列的后面。
  3、按照构造的列排序。
  两分钟就搞定了!真是令人愉快啊。

PS. 我最近要找一个小型软件/网站的外包,工作量很小,但要求服务商比较稳定,能够提供长期持续的维护和升级。不知道谁有相关方面的信息?我在天津。

Written by ppip

August 25th, 2008 at 9:03 pm

Posted in Computer/计算机

Tagged with

从Excel的vlookup()函数说起

with 11 comments

1,一个实际问题

  提问:我有一张很大的表,比如说,全国所有城市和对应的人口数。现在我要把我所研究的10个城市的人口数找出来,我应该怎么做?

  最简单的答案:把这张大表打印出来,然后圈出自己要研究的城市的人口,然后再输入到对应的表里面去。
  我找到的答案:将大表放到Excel中,然后使用vlookup()函数,应用关键字索引,将所需要的对应人口数量找出来。具体用法如下:
  =vlookup(关键字, 搜索表, 返回值所在列, 精确搜索开关)
  当然,你也可以用python,或者任何你喜欢的自动化工具来完成这件事情,欢迎提供更高效的方法。

  这个是我最近两周在做的一件工作,有一组研究对象,我需要从不同的大型数据库中抽取他们的属性值,进行比较研究。幸运的是,这几个数据库都有导出到Excel的功能,不然我真的会疯了,因为有100个研究对象,4个数据库。最后,是vlookup()救了我一命。是的,只一条命令。

2,数据复用

  英文里面有一个词叫mashup,原意是声轨合成。简单的说,就是将不同来源的数据整合到一起,重新组合,以创造新的价值。很多文章都在讨论这个问题,很多博客都在做这件事情——比如说,他们将自己读过的好的博客,在自己的博客文章中列出来。方军最近在讨论的新闻聚合,还有他最近引用的IBM的新闻,都在说明,数据的整合和重复利用已经成为一个新的增长点,在这一点上,我们能够做更多的工作。
  从根本上来说,博客的流行和RSS(订阅源)有关,而RSS就是一种标准的数据交换手段。虽然他只是一个小小的文件,但是它通过标准化的数据交换,使每一个博客上的数据可以被第三方站点很容易的重新展示和复用,从而增加了信息的价值。
  另外,也曾经看到有些博客讨论在国内还没有流行起来的微格式,比如说,用标准格式展示个人名片,便于在互联网上交流和沟通。这些都是增加信息复用方便程度的手段。
  相对来说,很多的商用数据库还是比较封闭的,除了用自己的查询手段之外,无法与第三方软件对接。这一次我还算幸运,至少他们能够导出Excel。但更多的是一种传统思维的问题,比如说,很多人喜欢用Word做表格,因为打印出来比较漂亮,或者比较容易调整格式——但却因此大大增加了数据复用的难度。(在此我们暂不讨论使用.doc之类封闭格式所带来的负面影响)

3,软件帝国

  曾经很流行一句话:“用户往往只用到Office中10%的功能而已。”
  我想,那是说Office 97吧,那个时候刚刚整合进去VBA。现在应该是1%了。比如说,Office的多语言和全球部署,已经是2000年出来的功能;后来是2003,然后是2007。MS已经不知道往里面添加了多少新功能了。
  问题是,用户会去探索这些功能么?
  记得似乎是在Linus的Just for fun里面读过,绝大多数人用计算机,学习编程,仅仅是停留在”hello world”上面而已。”hello world”,然后呢?没有了。
  这一次周末在火车上,和unclewang聊了一路,也是说的这个问题。unclewang用计算机不太久,不过她觉得很新奇——原来计算机除了看电影、上BBS,还能做这么多有趣的事情?
  其实很多时候,我们只需要多想一点:“这件事情用计算机来做,能够在哪些地方更为省力?”
  经验表明,最懒惰的人,往往才是最好的玩家。
  反过来说,对于“勤奋”的普通人,商家要考虑的就是发布粒度的问题了,用可以接收的方式,把好的功能推给用户。微软?太大了,简直没有所谓粒度的问题……

Powered by ScribeFire.

Written by ppip

September 25th, 2007 at 8:46 pm

无觅相关文章插件,快速提升流量