问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

一个固定的值在excel表中纵向对应多个数据,现在要转换成横向的对应多个数据,详情看下图

发布网友 发布时间:2022-05-13 07:27

我来回答

5个回答

热心网友 时间:2024-02-21 11:38

首先,D列是自己输入,还是要用公式从A列获取?如果手动输入,跳过第1步。

1. D2单元格输入下面公式,不要直接回车,按Ctrl + Shift + Enter,再下拉:

=IFERROR(INDEX($A$2:$A$9,SMALL(IF(ROW($A$2:$A$9)-1=MATCH($A$2:$A$9,$A$2:$A$9,0),ROW(A2:A9)-1),ROW(1:1))),"")

2. 然后再在E2单元格输入下面公式,同样按Ctrl + Shift + Enter,再向右和向下拉:

=IFERROR(INDEX($B$2:$B$9,SMALL(IF($A$2:$A$9=$D2,ROW($A$2:$A$9)-1),COLUMN(A:A))),"")

(以上是以9行数据为例,可根据实际数据行数修改数字“9”)

热心网友 时间:2024-02-21 11:38

这种题,5分就可以了,100分太多了。

在C1输入Flag

在C2输入公式:="数值"&COUNTIF($A$2:A2,A2),然后向下填充

按Alt+F11,打开VBE编辑器,然后在左边资源管理器窗口插入一个模块;

复制以下代码:

Function GetSqlRecordSetFromExcel(ByVal Sqlstr As String, ByVal Headers As Boolean)


    Dim cn As Object, rs As Object

    Dim strConn As String

    Dim Path As String, m,n

    

    Path = ActiveWorkbook.FullName

    If Headers = True Then

        strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & Path & ";" & "Extended Properties=""Excel 12.0 Macro; IMEX=2;HDR=YES"""

    Else

        strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & Path & ";" & "Extended Properties=""Excel 12.0 Macro; IMEX=2;HDR=NO"""

    End If

    

    Set cn = CreateObject("ADODB.Connection")

    Set rs = CreateObject("ADODB.Recordset")

    cn.Open strConn

        

    On Error GoTo herro

    Set rs = cn.Execute(Sqlstr)


    Dim i As Long, j As Long

    Dim arr() As Variant, brr() As Variant

   

    brr() = ArrayTranspose(rs.GetRows)

    

    m = UBound(brr(), 1) + 2

    n = UBound(brr(), 2) + 1

    ReDim arr(1 To m, 1 To n)

    

    For j = 1 To n

        arr(1, j) = rs.Fields(j - 1).name

    Next

    

    For i = 2 To m

        For j = 1 To n

            arr(i, j) = brr(i - 2, j - 1)

        Next

    Next

    Erase brr

    rs.Close

    cn.Close

    Set rs = Nothing

    Set cn = Nothing

herro:

    If Err.Number = 0 Then

        GetSqlRecordSetFromExcel = arr()

    Else

        GetSqlRecordSetFromExcel = "Error Number: " & Err.Number & ";" & Err.Description

    End If

End Function


Function ArrayTranspose(ByVal SourceArray As Variant) As Variant

Dim i, j

Dim arr As Variant

ReDim arr(0 To UBound(SourceArray, 2), 0 To UBound(SourceArray, 1))

For i = LBound(SourceArray, 1) To UBound(SourceArray, 1)

    For j = LBound(SourceArray, 2) To UBound(SourceArray, 2)

        If VBA.IsNull(SourceArray(i, j)) Then

            arr(j, i) = ""

        Else

            arr(j, i) = SourceArray(i, j)

        End If

    Next

Next

ArrayTranspose = arr

End Function


5.在模块1内粘贴代码,然后关闭VBE界面回到Excel

6.这时候在D1单元格输入公式(请根据你数据存放的sheet名字修改公式中的粗体sheet1:

=GetSqlRecordSetFromExcel("TRANSFORM  Last(值) SELECT ID FROM [sheet1$A1:C] GROUP BY ID order by id PIVOT  FLAG",1)

7.如果是office2016以上版本,直接回车,完成。

追问咋做

热心网友 时间:2024-02-21 11:39

用INDEX数组公式

1、复制A列并粘贴到D列,点上面菜单上的:数据==>删除重复项==>勾选:以当前选定区域排序==>点按:删除重复项==>确定。  即可在D列得到A中所有不重复项

2、在E1单元格输入数组公式:=IFERROR(INDEX($B$2:$B$8,SMALL(IF($A$2:$A$8=$D2,ROW($1:$7),9^9),COLUMN(A$1))),"")

  特别注意:上面的数组公式粘贴或者输入后必须同时按CTRL+SHIFT+ENTER这3个键结束,否则公式无效的!!!

3、复制并下拉和右拉E2单元格的公式,填充好E、F、G……列即可。

热心网友 时间:2024-02-21 11:40

如果d列也要自动生成,数据量大就加个辅助列,c2=if(a2="","",if(a2<>a1,row(),""))下拉

d2=if(row(a1)>count(c:c),"",index(a:a,small(c:c,row(a1)))))下拉,最后e2=if($d2="","",if(column(a1)<countif($a:$a,$d2),"",index($b:$b,match($d2,$a:a,0)+column(a1)-1)))右拉下拉追问d2公式拉出来的数据就是A列的订单号,有什么区别吗

然后我用拉E2的数据,也只能出来第一列的数据,右拉没数据,这是咋回事,数据是挺多的,,可以发源文件你们看看呢

追答那把问题作为内容(邮件主题一定要包含“excel”,本人以此为依据辨别非垃圾邮件,以免误删),excel样表文件(把现状和目标效果表示出)作为附件发到yqch134@163.com帮你看下,才发现公式失误e2=if($d2="","",if(column(a1)>countif($a:$a,$d2),"",index($b:$b,match($d2,$a:a,0)+column(a1)-1)))右拉下拉

热心网友 时间:2024-02-21 11:40

可用vba完成:
sub test()
Set d=CreateObject("Scripting.Dictionary")
r=Cells(rows.count,1).end(3).row
arr=Range("A2:B" & r)
For i=1 to Ubound(arr)
d(arr(i,1))=d(arr(i,1)) & arr(i,2) & " "
Next
y=d.keys
t=d.items
For i=0 to Ubound(y)
Cells(i+2,4)=y(i)
Cells(i+2,5)=t(i)
Next
End sub
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
艾芙洛洗发水为什么不在商场销售商 艾芙洛洗发水是英国的吗 毕业生刚刚签了三方协议,想毁,怎么办 适合夫妻干的生意有哪些 新生蜜蜂多久出巢试飞 新生蜜蜂什么时候进行首次试飞? 蜜蜂几月几日出生外貌和颜色? 当脚模一定要脚趾修长吗 脚长成这样,能当脚膜吗 固话遇忙记存呼叫业务有什么特点? 什么是固话遇忙记存呼叫业务? excel表中纵向对应多个数据,现在要转换成横向的对应多个数据 为什么复选框不能勾选?急死了 十七大党章规定党的总支部委员会和支部委员会设立了什么 支委会3人如何分工 为什么女人更年期爱唠叨 更年期的女人是不是爱唠叨和发脾气? 为什么女人到了更年期爱唠叨? 三个人的党支部如何成立,如何分工 更年期为什么那么能唠叨? 妈妈更年期,整天念念叨叨,脾气不大好,有什么办法能改善吗? 女人四十五岁爱唠叨怎么回事 人到了更年期真的爱唠叨吗? 是不是每个结了婚的中年女人都会变得唠叨,不讲道理 女性更年期症状是什么呀 是不是脾气暴躁 爱唠叨、抱怨 47进入更年期正常吗 如何对待更年期父母呢 支部委员可以由上级党组织任命么? 为什么很多女性中年以后都爱唠叨呢? 更年期是不是很爱唠叨 更年期的女性是不是都喜欢唠叨? 女人经常发话是不是更年期来了? 为什么女人在更年期喜欢唠叨? EXCEL如何将多竖纵列数据编辑成横向排列?如图 如果利率和收入都能按供求情况自动得到调整,当利率和收入的组合点出 如果利率和收入都能按供求情况自动得到调整,那么利率和收入的组合点出现在IS曲线的左下方,LM曲线的右下 如果利率和收入都能按供求情况自动得到调整,则利率和收入的组合点出现再IS曲线左下方,LM曲线由下方 如果利率和收入的组合点出现在 IS 曲线的右上方、LM 曲线的左上方的区域中,则 表明 什么 西方经济学宏观(高鸿业版)教材详细答案 问问 求助 !!!帮我哦!!!西方经济学 利率和收入点出现在is曲线右上方,lm曲线的右下方区域中,则表示 西方经济学微观部分第五版,高鸿业主编的,课后习题答案 经济学大神进 宏观经济学作业 求助!!! 西方经济学IS曲线问题2 求 高鸿业编第四版好宏观经济学课后习题解析!!! 市场利率的高低取决于?A 国家* B 浮动利率 C 借贷资金的供求关系 D 统一利率 给女儿娶一个有诗意的名字!本人姓李!最好有诗为证! 想给女儿取名字,中间要有亿字,或者诗字的,朋友们帮帮忙!谢谢! 姓罗的女孩子想带个诗字的名字 上海社保网怎么查询居住是否到期 在《桃花源记》中便舍船是什么意思? 便舍船,从口入。舍的意思 便舍船从口入翻译