从网站复制/粘贴时格式化Excel表格


0

我正在尝试从这个网站创建一个数据库。每个国家/地区都有大量代理商,其姓名旁边有联系方式(不需要传真号码和公司名称)。

问题是,由于网站格式,当我将数据复制到我的Excel工作表时,每个代理的信息分布在3或4行。

我需要每个代理将所有信息放在一行,

例如(托架中的单元格)

[ A1 ]       [ B1 ]             [ C1 ]  [ D1 ]                     [ E1 ]  [ F1 ]
GRO Alberti  alerti.ago@got.ch  Bosnia  P Hora K2 A 8 41 Dhjetori  Girana  Tel:+42-79/379 82 86.

我尝试手动复制粘贴,但这需要太长时间。

是否有任何自动或更快的方式来实现我想要做的事情?


我建议你在Stack Overflow上发布这个问题,因为这是关于编程的。但是,您应该首先尝试并发布一个问题,显示您尝试过的内容以及无法使用的原因。Excel有一个很好的宏录制器:您可以手动播放您想要做的事情,并查看生成的代码。
d-stroyer 2013年

谢谢d-stroyer,但我已经尝试了,我的问题被搁置,因为它是“关闭主题”
user2699532 2013年

对,我现在看到。关键是你需要先尝试(自动方式),然后再问。你可以用宏录制器考虑我的建议。
d-stroyer 2013年

此外,您可以考虑解决您的问题:1。从网站获取数据(格式不完整)的text / csv文件; 2.使用Excel,Python或其他任何内容将数据导入excel文件。小问题比大问题更容易回答。
d-stroyer 2013年

Answers:


0

如果要使用Excel公式:

  • 将表复制并粘贴到Excel中
    • 将合并前2列中的行,但公式只能在合并区域的左上角单元格中看到该值,其他单元格对于公式显示为空白
  • 假设数据在单元格中开始,在单元格A2中添加以下公式E2- 输入新行Alt+Enter
    = C2和IF($ A3 <>“”,“”,“ 
    ”和E3)
  • 将公式复制到适当的范围
  • Name列过滤,不包括(Blanks)
  • 隐藏原始AddressOther info
  • 将特殊值作为值复制并粘贴到新工作表中

最后一步之前解决方案的插图

基础算法是:

  1. 从底行开始
  2. 如果Name在1行中不是空的,S则从该行创建一个包含Address 的新字符串,
    否则将此行中的Address 添加到文本的开头S
  3. 向上移动1排

0

我不确定你是如何获得C1的价值的,但你应该能够得到页面的来源。为此,请按Ctrl+ U。这应该给你一个用html编写的页面。寻找第128行(或表开始的地方,应该有你需要的数据,它开始于<table class ...

将所有内容复制<table class ...</table>同一行,靠近末尾。

将其粘贴到记事本中。

单击Ctrl+ H并使用查找内容:<br />替换为:“”(一个空格)并点击全部替换。

复制所有内容并粘贴到excel中。您可以在此之后删除格式以均匀单元格尺寸。

请注意,超链接将保留在数据中。

编辑:

要分开电子邮件,电话,移动和传真会有点长,但不会那么久。

要获取电子邮件,请在E2的下一个单元格中使用此公式:

=LEFT(D2, FIND(" ",D2)-1)

然后拖下来。

为了获得现在的数字,在F列中分别获得所有数字会更容易:

=MID(D2, FIND(" ",D2)+1, LEN(D2))

现在在G,我们将获得电话,在H,我们将获得传真,在我,我们将获得移动。

在G2中,放下并向下拖动:

=IFERROR(MID(F2,FIND("Tel:",F2)+4,IFERROR(FIND(":",F2,FIND("Tel:",F2)+4),LEN(F2))-FIND("Tel:",F2)-4),"")

在H2中,放下并向下拖动:

=IFERROR(MID(F2,FIND("Fax:",F2)+4,IFERROR(FIND(":",F2,FIND("Fax:",F2)+4),LEN(F2))-FIND("Fax:",F2)-4),"")

在I2中,放下并向下拖动:

=IFERROR(MID(F2,FIND("Mobile:",F2)+7,IFERROR(FIND(":",F2,FIND("Mobile:",F2)+7),LEN(F2))-FIND("Mobile:",F2)-7),"")

之后,复制所有内容并粘贴为值以删除公式。选择G到I列并替换所有TelFaxMobile不是通过Ctrl+ H

法语函数按上述顺序排列:

=GAUCHE(D2, TROUVE(" ",D2)-1)

=STXT(D2, TROUVE(" ",D2)+1, NBCAR(D2))

=SIERREUR(STXT(F2,TROUVE("Tel:",F2)+4,SIERREUR(TROUVE(":",F2,TROUVE("Tel:",F2)+4),NBCAR(F2))-TROUVE("Tel:",F2)-4),"")

=SIERREUR(STXT(F2,TROUVE("Fax:",F2)+4,SIERREUR(TROUVE(":",F2,TROUVE("Fax:",F2)+4),NBCAR(F2))-TROUVE("Fax:",F2)-4),"")

=SIERREUR(STXT(F2,TROUVE("Mobile:",F2)+7,SIERREUR(TROUVE(":",F2,TROUVE("Mobile:",F2)+7),NBCAR(F2))-TROUVE("Mobile:",F2)-7),"")

谢谢,这几乎有用,除了我需要将“其他信息”列中的信息分成3列:电子邮件,固定电话,移动电话。有没有办法自动做到这一点?如果不是,我只需要手动完成所有操作。
user2699532 2013年

@ user2699532我添加了一些你可以用来比手动更快的东西:)
杰里

感谢您抽出时间来做这件事,但我真的很抱歉当我输入第一个公式“= LEFT(D2,FIND(”“,D2)-1)时出现错误”它是:#NOM?(我的Excel是法语,所以这是法语的错误信息。
user2699532 2013年

@ user2699532哦,只需用分号替换所有公式中的所有逗号;。J'espere que cela resoud les erreurs :)
杰里

我很抱歉,但这对我来说都没有用。我必须作为一个完整的Excel菜鸟遇到,但这些方程式还有其他可能的解决方案吗?如果没有,不要强调它不要只是手动完成整个事情。
user2699532 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.