今天来看看梁总出的练习题哈

转换成下面的二维表效果图(要求:必须要跟效果表一致)

方法1:

小子大神Python:

import xlrd

import xlwt

s = set()

d = {}

a = 0

rs = 0

cs =0

f = xlwt.Workbook()

st = f.add_sheet(r'newcity',cell_overwrite_ok=True)

wb = xlrd.open_workbook(r'E:\excel\city.xlsm')

sh = wb.sheets()[0]

for i in range(1,sh.nrows):

d[sh.cell_value(i,1) sh.cell_value(i,0)]=sh.cell_value(i,2)

d[sh.cell_value(i,0) sh.cell_value(i,1)]=sh.cell_value(i,2)

s.add(sh.cell_value(i,1))

s.add(sh.cell_value(i,0))

for r in s:

rs = 1

cs =0

for c in s:

cs =1

if r c in d:

st.write(cs,rs,d[r c])

else:

st.write(cs,rs,0)

st.write(rs,0,r)

st.write(0,rs,r)

print(d)

print(s)

f.save(r'E:\\excel\\citys.xls')

方法2:

诗人:

Sub cdsr()

Dim arr, brr(), d As Object, d1 As Object, i&, s, j&

arr = Sheet6.[a1].CurrentRegion

Set d = CreateObject('scripting.dictionary')

Set d1 = CreateObject('scripting.dictionary')

For i = 2 To UBound(arr)

d(arr(i, 1)) = ''

d(arr(i, 2)) = ''

d1(arr(i, 1) & arr(i, 2)) = arr(i, 3)

Next

s = d.keys

ReDim brr(1 To d.Count 1, 1 To d.Count 1)

For i = 2 To UBound(brr)

brr(i, 1) = s(i - 2)

brr(1, i) = s(i - 2)

Next

For i = 2 To UBound(brr)

For j = 2 To UBound(brr, 2)

brr(i, j) = d1(brr(i, 1) & brr(1, j))

If brr(i, j) = '' Then

brr(i, j) = d1(brr(1, j) & brr(i, 1))

End If

Next

Next

Sheet7.Cells.ClearContents

Sheet7.[a1].Resize(UBound(brr), UBound(brr, 2)) = brr

End Sub

方法3:

李长老:

Sub lzl()

Dim d, d1, arr, i, a, n%

Set d = CreateObject('scripting.dictionary')

Set d1 = CreateObject('scripting.dictionary')

arr = Range('a2:c' & Cells(Rows.Count, 1).End(3).Row)

For i = 1 To UBound(arr)

d(arr(i, 1)) = ''

d1(arr(i, 1) & '-' & arr(i, 2)) = arr(i, 3)

d1(arr(i, 2) & '-' & arr(i, 1)) = arr(i, 3)

Next

For i = 1 To UBound(arr)

d(arr(i, 2)) = ''

Next

Dim brr(1 To 100, 1 To 100)

n = 1

For Each a In d.keys

n = n 1

brr(n, 1) = a

brr(1, n) = a

Next

For i = 2 To d.Count 1

For n = 2 To d.Count 1

If i = n Then

brr(i, n) = 0

ElseIf d1.Exists(brr(i, 1) & '-' & brr(1, n)) Then

brr(i, n) = d1(brr(i, 1) & '-' & brr(1, n))

ElseIf d1.Exists(brr(1, n) & '-' & brr(i, 1)) Then

brr(i, n) = d1(brr(1, n) & '-' & brr(i, 1))

Else

brr(i, n) = ''

End If

Next

Next

Sheets('Matrix').Range('a1').Resize(d.Count 1, d.Count 1) = brr

End Sub

方法4:

bajifeng:

Sub b()    'bajifeng

Set d = CreateObject('Scripting.Dictionary')

ar = [a2].Resize([a65536].End(3).Row - 1, 3)

For i = 1 To UBound(ar)

d(ar(i, 1)) = ''

Next

For i = 1 To UBound(ar)

d(ar(i, 2)) = ''

Next

n = d.Count

ReDim br(1 To n 1, 1 To n 1)

For i = 1 To n

br(i 1, 1) = d.keys()(i - 1)

br(1, i 1) = d.keys()(i - 1)

Next

For i = 1 To UBound(ar)

For ib = 1 To n 1

For jb = 1 To n 1

If ar(i, 1) & ar(i, 2) = br(ib, 1) & br(1, jb) Then br(ib, jb) = ar(i, 3): GoTo 100

Next

Next

100:

Next

Sheets(3).Cells.Clear

Sheets(3).[a1].Resize(n 1, n 1) = br

End Sub

方法5:

龙神:

Sub transform()

Dim conn As Object

Dim rst As Object

Dim sql As String, i As Long

Set conn = CreateObject('adodb.connection')

Set rst = CreateObject('adodb.recordset')

conn.Open 'dsn=excel files;dbq=' & ThisWorkbook.FullName

Dim sort_array

sort_array = Array('上海', '乌鲁木齐', '兰州', '北京', '南京', '南宁', '南昌', '台北', '合肥', '呼和浩特', '哈尔滨', '天津', '太原', '广州', '成都', '拉萨', '昆明', '杭州', '武汉', '沈阳', '济南', '澳门', '石家庄', '福州', '西宁', '西安', '贵阳', '郑州', '重庆', '银川', '长春', '长沙', '香港')

sql = 'transform sum([Dist (km)]) select [City 2] as ['] from '

sql = sql & ' (select * from [City Distance$] union select [City 2],[City 1],[Dist (km)] from [City Distance$] union all select a,a,0 from (select [City 1] as a from [City Distance$] union select [City 2] from [City Distance$])) u_city '

sql = sql & 'group by [City 2],instr('' & Join(sort_array, ',') & '',[City 2]) '

sql = sql & ' order by instr('' & Join(sort_array, ',') & '',[City 2])'

sql = sql & ' pivot [City 1] in (' & Join(sort_array, ',') & ')'

rst.Open sql, conn, 3, 3

With Sheets('Matrix')

.Cells.Clear

For i = 0 To rst.Fields.Count - 1

.Range('A1').Offset(0, i) = rst.Fields(i).Name

Next

.Range('A2').CopyFromRecordset rst

End With

rst.Close

Set rst = Nothing

conn.Close

Set conn = Nothing

End Sub

方法6:

春心:

Sub Greenhand()

Dim arr, i&, j&, k%

Set d = CreateObject('scripting.dictionary')

arr = Range(Sheets('City Distance').Cells(2, 1), Sheets('City Distance').Cells(2, 3).End(4))

For i = 1 To UBound(arr)

d(arr(i, 1)) = ''

d(arr(i, 2)) = ''

Next

Sheets('Matrix').[A2].Resize(d.Count, 1) = Application.Transpose(d.keys)

Sheets('Matrix').[B1].Resize(1, d.Count) = Application.Transpose(Application.Transpose(d.keys))

For i = 1 To UBound(arr)

For k = 2 To d.Count 1

For j = 2 To d.Count 1

If arr(i, 1) = Sheets('Matrix').Cells(k, 1) And arr(i, 2) = Sheets('Matrix').Cells(1, j) _

Or arr(i, 1) = Sheets('Matrix').Cells(1, j) And arr(i, 2) = Sheets('Matrix').Cells(k, 1) Then

Sheets('Matrix').Cells(k, j) = arr(i, 3)

End If

Next

Next

Next

End Sub

方法7:

随心:

Sub test() '随心

Dim brr()

Sheets('效果表1').UsedRange.ClearContents

Set d = CreateObject('scripting.dictionary')

arr = Range('a1').CurrentRegion

For j = 1 To 2

For i = 2 To UBound(arr)

d(arr(i, j)) = ''

Next

Next

n = 1: m = 1

d_1 = d.keys

For i1 = 0 To UBound(d_1)

n = n 1

ReDim Preserve brr(1 To UBound(d_1) 2, 1 To n)

brr(1, n) = d_1(i1)

For i2 = 0 To UBound(d_1)

m = m 1

brr(m, 1) = d_1(i2)

For i3 = 1 To UBound(arr)

If arr(i3, 1) = d_1(i1) And arr(i3, 2) = d_1(i2) Then

brr(m, n) = arr(i3, 3)

Exit For

ElseIf arr(i3, 1) = d_1(i2) And arr(i3, 2) = d_1(i1) Then

brr(m, n) = arr(i3, 3)

Exit For

Else

brr(m, n) = 0

End If

Next

Next

m = 1

Next

Sheets('效果表1').[a1].Resize(UBound(brr, 2), UBound(brr)) = brr

End Sub

方法8:

随心Python:

import pandas as pd

import collections

import xlwt

newdata=xlwt.Workbook()

sheet2=newdata.add_sheet('sheet1',cell_overwrite_ok=True)

dic_1=collections.OrderedDict()

data=pd.read_excel('E:\\test\\一维.xlsx')

#data1=data[['City 1','City 2','Dist (km)']]

for line in data.index:

dic_1[data.loc[line,'City 1']]=''

dic_1[data.loc[line,'City 2']]=''

dkey=dic_1.keys()

list_1=[]

list_2=[]

list_3=[]

n=0

m=0

for line1 in dkey:

n =1

sheet2.write(n,0,line1)

for line2 in dkey:

m =1

sheet2.write(0,m,line2)

for line in data.index:

if line1==data.loc[line,'City 1'] and line2==data.loc[line,'City 2']:

sheet2.write(n,m,str(data.loc[line,'Dist (km)']))

break

elif line1==data.loc[line,'City 2'] and  line2==data.loc[line,'City 1']:

sheet2.write(n, m, str(data.loc[line, 'Dist (km)']))

break

else:

sheet2.write(n,m,0)

m=0

newdata.save('E:\\test\\结果.xls')

python二维表转一维表_【习题】一维表转二维表相关推荐

  1. 两问表和三问表哪个更少_[三问三解]关于问表和三问表的区别

    问表通过按下按掣或滑动螺栓可在需要时进行报时.最复杂的是"三问表",可对小时.刻钟和分钟报时.这一令人惊叹的功能是最难以制造和最具独占性的精密机芯之一. 问表是报时表的衍生品种.1 ...

  2. mysql 中中间表是什么意思_为什么会有这么多中间表?

    中间表的由来 中间表是数据库中专门存放中间计算结果的数据表.报表系统中的中间表是普遍存在的.那么,这些中间表是如何出现的?为什么中间表会越来越多?中间表会给项目组带来什么样的困扰,如何解决这些困扰?这 ...

  3. 运维工程师主要做什么_弱电工程IT运维工作到底是做什么的?

    前言: 大家好,我是薛哥.现在的弱电工程竣工验收完成后,都要进入一个运维阶段,也就是我们所说的质保期,这个质保期期间是由弱电承包商来做的,过了这个质保期以后,企业就会独立承担或者委托企业进行运维工作, ...

  4. arcgis中如何导出奥维可识别的图_如何将地图及奥维对象导出成图片 | 奥维互动地图浏览器...

    将地图导出成图片只能在Windows客户端软件进行,手机版.网页版无此功能:并且需要开通VIP才可以执行此操作,导出的图片像素大小和VIP级别有关,详见表1: 表1 将地图导出成图片的具体操作步骤: ...

  5. jpa遇到mysql表名大写怎么办_解决(springboot项目)mysql表名大写,造成jpa Table doesn't exist问题...

    一般实体类中的属性, 如contentType会被hibernate默认映射为content_type,如果数据库中的字段是contenttype则会不匹配 这个问题有2种解决方法: 我的报错是: j ...

  6. java获取表主外键_通过 jdbc 分析数据库中的表结构和主键外键

    文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/ 在某项目中用到了 hibernate ,大家都知道 hib ...

  7. mysql语言中修改表结构的命令_在T-SQL语言中,修改表结构时,应使用的命令是( )...

    Funk音乐流行于上世纪70年代至80年代,语言中应使用由于和别的音乐融合,在发展演变中其速度及音乐构成上,有了一些混血的变化 形体与舞蹈与( )有机地结合起来,改表可以将美形象化.具体化 屈膝侧举时 ...

  8. 数据库单表数据过亿_我也能写数据库 —— 单表查询

    前言 说不定期更新,就不定期更新:). 在翻译关系代数这篇文档的时候,总有一种惴惴不安的感觉伴随着我,其实还是对之前概览的一知半解,而DEMO项目Calcite-example-CSV为了介绍特性,添 ...

  9. 如何创建二维数组 微信小程序_微信小程序遍历二维数组

    在微信小程序中遍历二维数组,代码如下 data 中二维数组结构如下 data: { familys:[ { familyName:'贾家', users: [ {name:'贾宝玉'}, {name: ...

  10. mysql导出七张表成dtf文件_如何用Java实现把excel表中的数据导入到mysql数据库已有的表中?...

    展开全部 java 读excel 还是比较方便简单的,原理就是,先用java 读取excel,然后,一行行的写入数据库,字段的话32313133353236313431303231363533e4b8 ...

最新文章

  1. 解决上传文件或图片时选择相同文件无法触发change事件的问题
  2. Cortex-M3基本知识点(手册)
  3. Eureka和Zookeeper注册中心的区别
  4. flutter Radio 单选框
  5. .Net中委托的协变和逆变详解
  6. windows系统 ping Telnet等系统自带命令无法使用原因及解决方法
  7. Launcher启动的流程图【AndroidICS4.0——Launcher系列四】
  8. iOS 6分享列表——UIActivityViewController详解
  9. 数字电路与逻辑设计之集成触发器
  10. Python 音频文件批量切割
  11. Ubuntu 20.04 更换阿里源
  12. Ubuntu20.04Server双网卡问题
  13. Qt程序退出QThread: Destroyed while thread is still running问题
  14. css实现烟雾效果(css制作汽车尾气排放效果)
  15. mysql 禁用日志_MYSQL禁用生成日志文件mysql
  16. Mac中Caps Lock(大写锁定键)为Control键(Emacs解放小拇指.)
  17. [Redis] Redis实战
  18. Comparable与Comparator的再学习与思考
  19. Pycharm 快捷键 整理
  20. 计算机专业课考研试卷谁出卷,考研试卷谁来改?揭开考研阅卷流程内幕

热门文章

  1. 首台android手机号码,国内首批手机Android 12尝鲜列表已公布,华为与荣耀不在名单之上...
  2. 语音合成:transformer tts 论文复现以及dockerfile
  3. 云南省依托大数据管理平台反映扶贫工作 实现精准监督常态化
  4. 2016 China CADCG 参会总结 -- day1
  5. 原创轻量VIO算法、简单易上手——XRSLAM帮你快速搭建移动平台AR应用
  6. 更干净的PC电源,还能净化空气,艾湃电竞AP-550Ti电源上手
  7. 吴恩达:22张图全解深度学习知识!
  8. php rsa 跨平台问题,为啥 rsa 这种算法扩展 php/python 不自带。而且跨平台也不是处理的很好...
  9. 用C语言写一个图书管理系统大作业
  10. 心形线方程-Geek献给女友的爱意情人节