2.ArrayList用链表的结构就是myAl 代表行,里面的myAl 代表行中的列,这样就可以了











































































改写
CREATE FUNCTION GetYQFromIndex(@AID nvarchar(100),@index int)
RETURNS nvarchar(1024)
AS
BEGIN
declare @Str varchar(1024)
select @Str=仪器
from (select *,IDENTITY(int,1,1) as indexid
from (select * from a表 where ID=@AID)a) b
where indexid=@index
return @Str
END
然后查询
select ID,dbo.GetYQFromIndex(ID,1)as 仪器1
,dbo.GetYQFromIndex(ID,2)as 仪器2
,dbo.GetYQFromIndex(ID,3)as 仪器3
...
from (select distinct ID from a表)a
///
既然提示“无法从函数内访问临时表”也可以不用函数
select ID
,(select b.仪器 from(select *,IDENTITY(int,1,1)as 排列序号 from a表 c where c.ID=a.ID)b where 排列序号=1)as 仪器1
,(select b.仪器 from(select *,IDENTITY(int,1,1)as 排列序号 from a表 c where c.ID=a.ID)b where 排列序号=2)as 仪器2
,(select b.仪器 from(select *,IDENTITY(int,1,1)as 排列序号 from a表 c where c.ID=a.ID)b where 排列序号=3)as 仪器3
...
from (select distinct ID from a表)a
///
自己应该学会调试和改写,方法一看就能会,要问调试细节,我这里没有SQL服务器啊^_^
1.绑定时候~~建议用泛型~~不过建议过江朋友的要求~~
2.ArrayList用链表的结构就是myAl 代表行,里面的myAl 代表行中的列,这样就可以了<%
@ Page Language="C#" AutoEventWireup="true" CodeFile="dataset.aspx.cs" Inherits="dataset" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField>
<ItemTemplate>
![]()
<label><%
# ((ArrayList)myAl[0])[0] %></label>
![]()
</ItemTemplate>
</asp:TemplateField>
![]()
![]()
<asp:TemplateField>
<ItemTemplate>
![]()
<label><%
# ((ArrayList)myAl[0])[1] %></label>
![]()
</ItemTemplate>
</asp:TemplateField>
![]()
![]()
![]()
<asp:TemplateField>
<ItemTemplate>
![]()
<label><%
# ((ArrayList)myAl[0])[2] %></label>
![]()
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
![]()
</div>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</form>
</body>
</html>
ArrayList myAl = new ArrayList();
foreach (DataRow dr in myDataSet.Tables[0].Rows)
![]()
{
ArrayList s = new ArrayList();
foreach (DataColumn dn in myDataSet.Tables[0].Columns)
![]()
{
if (dr[dn.ColumnName].ToString() =="")
continue;
s.Add(dr[dn.ColumnName]);
}
myAl.Add(s);
![]()
}
转载于:https://www.cnblogs.com/ajaxren/archive/2007/05/12/743750.html
在excel表格中,怎样把多行多列的数据转换成一行或一列?今天,我们的关键词就是“快速转置”。 具体怎么操作呢,一起来看一下吧。
在Excel中将多行多列数据转换到单列的方法有很多,本文介绍用公式进行转换的方法。假如Sheet1表的A2:E7区域有6行5列的数据需要转换到Sheet2表的A列,如图所示。
一、按先行后列的顺序转换
即先提取第一行的数据,再依次其他各行。在Sheet2的A1单元格输入公式:
=OFFSET(Sheet1!A$2,ROW(A5)/5-1,MOD(ROW(A5),5))
或:
=OFFSET(Sheet1!$A$2,INT((ROW(A1)-1)/5),MOD(ROW(A1)-1,5))
或:
=INDIRECT("Sheet1!"&ADDRESS(INT((ROW(A1)-1)/5)+2,MOD(ROW(A1)-1,5)+1,4))
然后向下填充公式到最后一个数据,结果如下图。
第一个公式中OFFSET函数的第二个参数“ROW(A5)/5-1”在某些单元格中可能会返回小数,OFFSET函数会自动取整。后两个公式中的 “INT((ROW(A1)-1)/5)”在向下填充时依次生成5个相同数为一组的序列数“0、0、0、0、0、1、1、1、1、1、2、2、2、2、 2……”,“MOD(ROW(A1)-1,5)”则依次生成“0、1、2、3、4”并循环。本例为6行5列,如果为N行M列,可将公式中用红色标识的数字 “5”改为M。
二、按先列后行的顺序转换
即先提取第一列的数据,再依次其他各列。在Sheet2的A1单元格输入公式:
=OFFSET(Sheet1!A$2,MOD(ROW(A6),6),ROW(A6)/6-1)
或:
=OFFSET(Sheet1!$A$2,MOD(ROW(A1)-1,6),INT((ROW(A1)-1)/6))
或:
=INDIRECT("Sheet1!"&ADDRESS(MOD(ROW(A1)-1,6)+2,INT((ROW(A1)-1)/6)+1,4))
本例为6行5列,如果为N行M列,可将公式中用红色标识的数字“6”改为N。
1. excel中怎样批量将行数据转换成列数据
你好,楼主想要的功能,可以使用VBA程序实现。
(一)VBA程序代码如下:(代码运行之前请做好数据备份,以免丢失) Sub abcd()Dim i1, i2, i3, strOn Error Resume NextSet mysheet1 = ThisWorkbook.Worksheets("Sheet1") '定义工作表Sheet1For i1 = 1 To 1000 '从第1行到1000行 If mysheet1.Cells(i1, 1) <> "" Then '如果单元格不是空白,则 str = Mid(mysheet1.Cells(i1, 1), 1, 1) '截取第一个字符 If IsNumeric(str) = True Then '如果截取的字符是数字,则 i2 = i1 i3 = 1 Else i3 = i3 + 1 mysheet1.Cells(i2, i3) = mysheet1.Cells(i1, 1) '把ABCD项写入含有数字的那一行 End IfEnd IfNextEnd Sub (二)程序运行前后的结果如下图所示,望笑纳。 。
2. Excel 表格 批量将行数据换成列数据
可以使用公式来解决你的问题。
1、首先确认你的原始表格是从SHEET1的A1单元格开始排列的。
2、在sheet2的a1单元格中输入如下公式:
=IF(MOD(ROW(),3)=1,OFFSET(Sheet1!A$1,TRUNC(ROW()/3),0),IF(MOD(ROW(),3)=2,OFFSET(Sheet1!B$1,TRUNC(ROW()/3),0),IF(MOD(ROW(),3)=0,OFFSET(Sheet1!C$1,TRUNC(ROW()/3)-1,0),"")))
3、将此公式向下拖动,需要多少拖动多少。
任务完成
3. excel中怎么把多行多列转换成一行多列
参照此公式,在sheet2提取转换,在名称框(编辑栏左边,列标a上面)输入a1:av5(因,我只模拟了12列20行数据,所以提取过来的范围是a1:av5,你自己计算下应该是什么范围,用=address(1,360,4)可获取第360列(每一行是360个数据)第1行的单元格地址)回车,直接输入公式=INDEX(Sheet1!$A:$L,ROUNDUP(COLUMN(AV5)/12,0)+ROW(AV5)*30-30,MOD(COLUMN(AV5)-1,12)+1)同时按ctrl+回车结束。
4. EXCEL批量行转列(按图所示)
在J2:L2中分别输入或复制粘贴下列公式 =INDEX(A:A,MOD(ROW(A1)-1,5)+2) 【或=INDEX(A:A,MOD(ROW(A5),5)+2)】 =INDEX($1:$1,,INT((ROW(A1)-1)/5)+2) 【或=INDEX($1:$1,,INT(ROW(A10)/5))】 =INDEX($B$2:$F$6,MATCH(J2,$A$2:$A$6,),MATCH(K2,$B$1:$F$1,)) 选择J2:L2,下拉填充 如果A不止5行,将J2K2公式中的5修改为相应的行数。
。
5. EXCEL 如何把多列多行转换成一列多行
1. 需要将A列到C列的数值复制到一列中。
2. 点击“剪贴板”右下角的小按钮,在页面左面弹出了剪贴板对话框。
3. 拖动鼠标左键选中A2:C5单元格区域,点击鼠标右键,在弹出的菜单中选择“复制”选项。
4. 双击F2单元格,然后点击粘帖板中复制的内容,将内容复制到F2单元格中。
5. 将光标移动到公式编辑栏中,选中数据内容,点击鼠标右键,弹出的菜单中选择“复制”选项。
6. 然后按“ESC”键,按“CTUL+V”组合键将数据内容重新复制到F2单元格。
7. 调整列宽,依次点击【开始】-【填充】-【两端对齐】选项。
8. 弹出“Mircrosoft Office Excel”对话框,点击【确定】按钮。
9. 可以看到数值就被复制过来了且在一列中列式。此时,数值是文本格式,点击小按钮,在弹出的选项中选择“转换为数字”选项,这样文本格式的内容就转换成了数值形式。
6. excel怎麽批量把横排数据变成一列
单看你的例子
方法很多
假设你的数据在A1:J1
最快捷的基本操作
复制原数据,右击目的地单元格,选择性粘贴,转置,确定
公式的话
=OFFSET(A$1,,ROW(A1)-1)
=INDEX($1:$1,ROW(1:1))
=INDIRECT(ADDRESS(1,ROW(1:1)))
=INDIRECT(CHAR(64+ROW(1:1))&1)
往下拖拉填充
=TRANSPOSE(A1:J1)
多单元格数组公式
7. 如何把excel多列(每列不同行),变成一列
可以使用如下宏代码实现操作目的。
Sub ComCol()
On Error Resume Next
Dim i As Single
Dim Fcol, Ecol As Single
Dim myRange As Range
Set myRange = Application.InputBox("选择区域", Type:=8)
Fcol = Range(Left(myRange.Address, 4)).Column
Ecol = Range(Right(myRange.Address, 4)).Column
For i = Fcol + 1 To Ecol
Range(Cells(1, i), Cells(Cells(65535, i).End(xlUp).Row, i)).Copy Destination:=Cells(Cells(65535, Fcol).End(xlUp).Row + 1, Fcol)
Next
End Sub