设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2433|回复: 6
打印 上一主题 下一主题

[Access本身] 自己已解决:交叉2DExcel表格如何导入到Access数据表中

[复制链接]
跳转到指定楼层
1#
发表于 2010-11-9 13:37:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 supperboy 于 2010-11-12 09:36 编辑

我有一张excel表格,想要导入到Access数据库中,但是由于表格的特殊性,实在不知如何是好,请各位老师帮我一下啊,表格如下:

颜色1 颜色2 颜色3 颜色4
尺码 白色 黑色 红色 绿色
X       21     32              12
XL     24               21     5
SS              34      43    12
M      13      35     23    12

想要的数据库表,表事先在Access库中建立好的:

尺码 颜色 数量
X   白色 21
X   黑色 32
X   绿色 12
XL  白色 24
XL  红色 21
XL  绿色 5

以此类推,请大家帮我一下,并且其中没有数量的单元格该如何判断,谢谢!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2010-11-9 16:39:57 | 只看该作者
在ACC里怎么折腾我不知道,不过在E里,倒是可以先转换一下的。
尺码列:=INDIRECT("a"&INT(ROW(A8)/4))下拉,如果颜色有十种,那就改成INDIRECT("a"&INT(ROW(A20)/10))
颜色列:=INDIRECT("r1c"&MOD(ROW(A4),4)+2,),如果尺码有10种,那就改成INDIRECT("r1c"&MOD(ROW(A10),10)+2,)
数量列:=SUMPRODUCT((A$2:A$5=A11)*(B$1:E$1=B11)*B$2:E$5)(按你第一个表,尺码在A1单元格写的,公式中的A11是对应的尺码,B11是对应的颜色。

完成以后,查找0,注意是单元格全匹配,查找全部后按CTRL+A键全选,然后删除行即可。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
3#
 楼主| 发表于 2010-11-10 18:51:47 | 只看该作者
在excel中我也知道转换,关键是我需要在Access做自动化

点击这里给我发消息

4#
发表于 2010-11-10 18:58:24 | 只看该作者
那我帮你转ACCESS版
5#
 楼主| 发表于 2010-11-12 09:35:35 | 只看该作者
经过自己的努力,终于解决了,先把源代码贴上,给大家共享,与大家一起进步

Dim db2 As New ADODB.Connection
Dim rs2 As New ADODB.Recordset
Dim nSheetCount As Integer
Dim i As Integer
Dim AAA As Integer
Dim BBB As Integer

Dim sArrFieldsName

Sub 数据导入()

    db2.ConnectionString = "rovider=Microsoft.Jet.OLEDB.4.0ersist Security Info=False;Data Source=" & CurrentProject.Path & "\test.mdb"
    db2.Open

    Dim NewXls As Excel.Application
    Dim NewBook As Excel.Workbook
    Dim NewSheet As Excel.Worksheet
    '
    Set NewXls = New Excel.Application    '创建 EXCEL 应用程序,打开 EXCEL2000
    Set NewBook = NewXls.Workbooks.Open(CurrentProject.Path & "\Demo.xls")  '创建工作簿
    nSheetCount = NewBook.Worksheets.Count

    sArrFieldsName = Array("尺码", "颜色", "数量")

    Set rs2 = Nothing
    rs2.CursorLocation = adUseClient
    rs2.Open "select * from 1 ", db2, adOpenStatic, adLockPessimistic

    Set NewSheet = NewBook.Worksheets(1)  '创建工作表

    For AAA = 2 To 10    '尺码行数

        For BBB = 1 To 6  '颜色列数
            If NewSheet.Cells(AAA + 1, 1) <> "" Then
                If NewSheet.Cells(2, BBB + 1) <> "" Then
                    If Nz(NewSheet.Cells(AAA + 1, BBB + 1)) <> 0 Then
                        rs2.AddNew

                        rs2!尺码 = NewSheet.Cells(AAA + 1, 1).Value
                        rs2!颜色 = NewSheet.Cells(2, BBB + 1).Value
                        rs2!数量 = NewSheet.Cells(AAA + 1, BBB + 1).Value
                    End If
                End If
            End If
        Next
    Next

    rs2.Update

    NewXls.Quit
    db2.Close

End Sub
6#
发表于 2010-11-11 13:14:40 | 只看该作者
learning. very good.
7#
 楼主| 发表于 2010-11-11 09:12:37 | 只看该作者
谢谢管理员,自己顶一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-21 13:18 , Processed in 0.082772 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表