excel求助,需求表达不出来,请大神进贴详查

  • y
    yangzirong
    大概意思应该是把集中在同一列里某一本书的各项信息,提取到同一行的不同列里11.xlsx(56.49 KB)
  • l
    liboyan123
    选中—数据—分列
  • y
    yangzirong
    换了个浏览器才把图片和附件传上来,拜托大神解疑


    ps:楼上说的分列是搞不定的
  • c
    cjzstc
    只能VBA或者Python了
  • o
    oicqgod
    2019-12-06_102816.png

    复制-》选择性粘贴-》转置
  • z
    zhuangpan12
    抖音关注那几个表哥表姐,还是有干货的
  • y
    yangzirong
    回复5#oicqgod


    总共两千多条,手动操作不起
  • o
    oicqgod
    哦,刚才没看到样表,你这种不规范的格式,编个VBA程序来处理比较合适。
  • y
    yangzirong
    数据不规范真难整,excel简单的我还能弄一弄,VBA 就不行了
  • o
    oicqgod
    回复9#yangzirong

    我可以用VBA试试,但水平太差,可能要稍晚给你回复。
  • y
    yangzirong
    回复10#oicqgod

    太感谢了!
    谢谢啊
  • f
    fangyu
    如果确定每本书都是8行的话,直接用rc引用,手动填写两本到右边。剩下的直接智能填充试试?比如r[6i+1]c[1],然后i选一串自然数列
  • h
    heavenbow
    不是8行,有的多个译者。这是个坑表。用excel麻烦
  • y
    yxmr
    1. Sub restruct()
    2. Dim i, j, t
    3. j = 1
    4. For i = 1 To 200:
    5. Set B = Range(Cells(j, 1), Cells(2000, 1)).Find("出版时间", LookAt:=xlPart)
    6. If Not B Is Nothing Then r = B.Row

    7. Cells(1, 6).Value = "书名"
    8. Cells(i + 1, 6).Value = Cells(r - 6, 1) '书名

    9. Cells(1, 7).Value = "作者"
    10. Set C = Range(Cells(r - 6, 1), Cells(r, 1)).Find("作 者", LookAt:=xlPart)
    11. If Not C Is Nothing Then Cells(i + 1, 7).Value = C.Value '作者

    12. Cells(1, 8).Value = "译者"
    13. Set D = Range(Cells(r - 6, 1), Cells(r, 1)).Find("译 者", LookAt:=xlPart)
    14. If Not D Is Nothing Then Cells(i + 1, 8).Value = D.Value '译者

    15. Cells(1, 9).Value = "ISBN"
    16. Set E = Range(Cells(r - 6, 1), Cells(r, 1)).Find("I S B N", LookAt:=xlPart)
    17. If Not E Is Nothing Then Cells(i + 1, 9).Value = E.Value 'I S B N

    18. Cells(1, 10).Value = "定价"
    19. Set F = Range(Cells(r - 6, 1), Cells(r, 1)).Find("定 价", LookAt:=xlPart)
    20. If Not F Is Nothing Then Cells(i + 1, 10).Value = F.Value '定价

    21. Cells(1, 11).Value = "出版社"
    22. Set G = Range(Cells(r - 6, 1), Cells(r, 1)).Find("出 版 社", LookAt:=xlPart)
    23. If Not G Is Nothing Then Cells(i + 1, 11).Value = G.Value '出版社

    24. Cells(1, 12).Value = "出版时间"
    25. Set H = Range(Cells(r - 6, 1), Cells(r, 1)).Find("出版时间", LookAt:=xlPart)
    26. If Not H Is Nothing Then Cells(i + 1, 12).Value = H.Value '出版时间
    27. j = r
    28. Next i

    29. End Sub
    复制代码


    试试这个,应该能满足你的要求

    (有一个bug是我懒得研究怎么判断你到底有多少本书,直接循环了200次,所以最后几十行会重复,要手动删一下
  • n
    nostoryboy
    正则,最快
  • s
    songco
    用公式也行, 反正有规律的, 8行一条数据
  • y
    yxmr
    有的是9行的,多了一行译者
  • 花菊
    mark iOS fly ~
  • y
    yegump
    译者不多的话,筛选译者,全部删除。
    2.增加一列1-8重复,直到最后一本书
    3.新增加列筛选1,粘贴到新表,筛选2,粘贴,重复到8
    4.手工加上译者列
  • y
    yangzirong
    回复14#yxmr

    大神,你这个代码是python吗?怎么个运行法?
  • y
    yxmr
    打开你的excel文件,按alt+f11,双击你的sheet,把代码粘贴进去,点运行
  • y
    yangzirong
    回复13#heavenbow


    坑死我了
  • x
    xhxdbxz
    白天没空,晚上试试~~
  • g
    guoyongyi68
    mark一下,刚学vba,回头试试
  • y
    yangzirong
    回复21#yxmr


    膜拜,大神!太牛逼了!
  • 活死人阿過
    其实我想问下,这个表的来源是哪里,是从什么网页里直接复制过来的吗?
    如果是因为直接复制导致格式错乱,那有更简单的办法
  • y
    yangzirong
    回复26#活死人阿過


    问过了,来源确实是网页上粘过来的,但不是一个网页,好多个网页的内容,是要弄个爬虫吗?
  • y
    yxmr
    在excel里用vba爬虫一步到位也行
  • y
    yangzirong
    回复28#yxmr


    程序员拯救世界!
  • z
    zzzzz
    excel的标准思路是加一列用来判断8行还是九行,类似b9=if(left(a8,4)='出版时间',if(left(b16,4)='出版时间',8,9),''),然后c9=a10 , d9=a12 , e9=if(b9=9, a13,"")。手机上回的没查过excel,可能有点语法错误,大概是这个意思。
  • 3
    35chen
    膜拜,学习
  • s
    sakjsak
    回复31#oicqgod


    大神,牛逼
  • 西
    西诺
    D版这么伟大,这都哪学的呀
  • y
    yangzirong
    回复31#oicqgod


    谢谢说的太多有点苍白无力!D版真是人杰地灵!
  • s
    sue2009
    回复31#oicqgod
    好牛逼啊小尾巴~
  • 1
    1.33
    我在倒饬把隔壁表的含有某个特定词语的对应的固定列的数值给取出来
    搞了半天还没弄明白
    似乎要用index和match
    比如从http://www.boc.cn/sourcedb/whpj/拉取的外汇数据
    我想在另一个sheet里边的某一cell显示美元的现汇卖出价
  • 活死人阿過
    回复27#yangzirong


    试试这个:https://it365.gitlab.io/zh-cn/table-to-excel/,看能不能满足需求。还有个叫“后羿采集器”的软件,我今天刚用过,免费版功能就比较多了,字段可以自由设置,分页也能识别,还是不错的。
  • o
    oicqgod
    回复38#1.33

    方便的话可以把表格贴出来,大家一起看看咋解决。
  • o
    oicqgod
    回复39#活死人阿過

    你推荐这个挺不错的,收藏了。
  • o
    oicqgod
    错了,也是野生的,不过是e版培养的。
  • s
    sz-hiker
    为什么你们写代码这么轻松快捷,我是野生的,憋一天才能写几十行,好崇拜你们科班的,排版都很有美感
  • o
    oicqgod
    回复44#sz-hiker

    也就几十行,我写了差不多3个小时,谈不上快捷。至于排版就简单了,Excel中安个Smart Indenter for VBE plus就自动给排好了。
  • a
    awk
    小问题 你发百度盘 我给你搞定。专业数据采集
  • y
    yxmr
    本职金融民工,非常野生了一边百度一边写,唯一追求是能跑通
  • y
    yangzirong
    回复39#活死人阿過


    可以可以,后羿这个真是够我用了,我这一下午学到的东西赶上今年一年了