excel中如何将一行数据根据属性拆分成多行数据 20

具体描述见附件图例,不知道能否用函数实现,求助各路大神... 具体描述见附件图例,不知道能否用函数实现,求助各路大神 展开
 我来答
mabengchi
2020-03-04 · TA获得超过390个赞
知道小有建树答主
回答量:613
采纳率:51%
帮助的人:54万
展开全部

你好!这题目是一个典型的将一个交叉表(二维表)数据转换为数据库记录(一行一行的记录)表的操作过程,我可以给你一个操作,稍等。

1、先将表整理一下,取消合并单元格,为了唯一值,在每个科目前加一个科目代码列(如图),

2、以身份证号加科目代码为唯一值,在表前加三空列,A2=H2&I2,B2=H2&M2,C2=H2&Q2, 下拉,得到全部值,然后复制这3列值,再选择性粘贴为数值(因公式所得值不能当参数);    

3、复制前三列值(不包括表头),粘贴---选择性粘贴为数值---转置,

4、列公式,错位相等,再下拉公式,直到值为0出现时,这样就把原来的交叉数据变成一列唯一的记录。

5、再复制得到的新列A,选择粘贴为数值,原表后面的列值全部可以用vlookup( )函数实现。B30=vlookup(A30, $A$1:$T$6, 6, 0), C30=vlookup(A30, $A$1:$T$6, 7, 0),

因本人经常与数据库打交道,常用EXCEL转换数据,这个方法当你面对海量数据进行加工时,特别实用,希望对你用。谢谢

boyayes
2019-02-27 · TA获得超过4519个赞
知道大有可为答主
回答量:4231
采纳率:75%
帮助的人:1039万
展开全部

【代码和图片已更新过,开始上传的答案有点问题,现在正确了。】

你这个问题,公式不好解决。用VBA代码吧。

先看下图:

方法:

点顶部的“开发者工具”,点“VisualBasic”打开VB编辑器,

在画蓝色框的区域内的任意位置,点右键---插入模块,

点击模块,在右侧输入代码,

点击画粉色圆圈的按钮执行代码,即可得出结果。

代码中加了注释文字,方便你看懂,

代码如下:

Sub 拆分数据()
    Dim i, t As Integer '定义i和t的类型
    For i = 3 To 4 '遍历原数据所在行,从第3行到第4行
        x = Evaluate("COUNTA(F" & i & ",I" & i & ",L" & i & ")") '统计Fi、Ii、Li非空单元格个数
        If [A10] = "" Then '数据从A10单元格开始写
            s = 10 '如果A10格是空的,则s=10
        Else
            s = [A65536].End(3).Row + 1 '否则s=A列最后一个数据的行号+1
        End If
        For t = s To s + x - 1 '遍历该同学需写数据的行,从第s行到第s+x-1行
            Range("A" & t) = Range("A" & i)
            Range("B" & t) = Range("B" & i)
            Range("C" & t) = Range("C" & i)
            Range("D" & t) = Range("D" & i)
            Range("E" & t) = Range("E" & i)
            Range("F" & t) = Cells(i, 5 + (t - s) * 3 + 1) '5指原数据中第一个科目左侧列的列序数
            Range("G" & t) = Cells(i, 5 + (t - s) * 3 + 2) '例图上第一个科目左列为E列的列序数是5
            Range("H" & t) = Cells(i, 5 + (t - s) * 3 + 3) '3指原数据科目列序数等差,F、I、L的列等差为3
        Next t
    Next i
End Sub
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
第二茗
2019-02-27 · 知道合伙人软件行家
第二茗
知道合伙人软件行家
采纳数:24 获赞数:149
国家一等奖奖学金获得者 excel表格制作数据处理达人

向TA提问 私信TA
展开全部

这个

个可以的

后面成绩的部分没写,思路是这样,后面的index里面地址要么手动换,要么你自己加一个offset

然后下拉拖动

注意第一行需要手动

=IF(COUNTIF($C$9:C11,C11)<COUNT(OFFSET(INDEX($C$2:$C$3,SUMPRODUCT(1/COUNTIF($C$9:C11,$C$9:C11))),0,3,1,6)),C11,INDEX($C$2:$C$3,SUMPRODUCT(1/COUNTIF($C$9:C11,$C$9:C11))+1))

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式