|
別シートセルの数式参照
SPREADに複数のシートが存在する場合、異なるシートのセルを数式で参照することができます。
この機能を利用し、異なるシートの数値を集計することも可能です。
このサンプルでは、「製品在庫」シートの在庫数を「製品種別集計」シートにて、
数式を使用して、製品種別毎に集計しています。
| 製品ID | 製品種別 | 製品名 | 原産地 | 製品内容量 | 製品単価 | 在庫 |
1 | 10001 | 乳製品 | 酪農ミルク | 北海道 | 180ml×12本 | 400 | 820 |
2 | 20001 | 清涼飲料水 | いよかんドリンク | 愛媛 | 720ml×10本 | 800 | 560 |
3 | 20002 | 清涼飲料水 | ぶどうジュース | 宮城 | 500ml×10本 | 2000 | 86 |
4 | 20003 | 清涼飲料水 | マンゴードリンク | 沖縄 | 500ml×10本 | 850 | 60 |
5 | 30001 | ビール | 激辛ビール | 北海道 | 350ml×6本 | 800 | 100 |
6 | 30002 | ビール | モルトビール | 宮城 | 500ml×6本 | 1000 | 100 |
7 | 20004 | 清涼飲料水 | ぶどうの街 | 宮城 | 750ml×6本 | 18000 | 120 |
8 | 30003 | ビール | オリエントの村 | 宮城 | 750ml×6本 | 7200 | 50 |
9 | 40002 | 焼酎 | 吟醸 ほめごろし | 静岡 | 1升瓶×6本 | 3600 | 100 |
10 | 40003 | 焼酎 | 大吟醸 オリエント | 宮城 | 1升瓶×6本 | 4800 | 100 |
11 | 40005 | 焼酎 | 麦焼酎 ちこちこ | 大分 | 1升瓶×6本 | 4800 | 50 |
12 | 10002 | 乳製品 | 酪農ミルク(低脂肪) | 北海道 | 180ml×12本 | 400 | 500 |
|
|
ソースコード
別ウィンドウで表示
using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration;
public partial class differentsheetformula : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack) return;
// シート追加
FarPoint.Web.Spread.SheetView sht = new FarPoint.Web.Spread.SheetView();
FpSpread1.Sheets.Add(sht);
// シート名設定
FpSpread1.Sheets[0].SheetName = "製品在庫";
FpSpread1.Sheets[1].SheetName = "製品種別集計";
FpSpread1.ClientAutoCalculation = true;
// セル型の自動設定を無効化
FpSpread1.ActiveSheetView.DataAutoCellTypes = false;
// データ連結
DataSet ds = new DataSet();
ds.ReadXml(MapPath("../App_Data/datanum1.xml"));
FpSpread1.DataSource = ds;
FpSpread1.Sheets[0].ColumnCount = 7;
FarPoint.Web.Spread.SheetView sheet1 = FpSpread1.Sheets[0];
FarPoint.Web.Spread.SheetView sheet2 = FpSpread1.Sheets[1];
// SPREAD初期化
InitSpread(sheet1);
// 集計シート設定
setsumsheet(sheet2);
// フォントサイズの設定
sheet1.DefaultStyle.Font.Size = FontUnit.Parse("80%");
sheet1.ColumnHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%");
sheet1.RowHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%");
sheet1.SheetCorner.DefaultStyle.Font.Size = FontUnit.Parse("80%");
// フォントサイズの設定
sheet2.DefaultStyle.Font.Size = FontUnit.Parse("80%");
sheet2.ColumnHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%");
sheet2.RowHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%");
sheet2.SheetCorner.DefaultStyle.Font.Size = FontUnit.Parse("80%");
}
private void InitSpread(FarPoint.Web.Spread.SheetView sheet)
{
// SPREAD設定
sheet.FpSpread.CommandBar.Visible = false;
sheet.FpSpread.CssClass = "spreadStyle";
sheet.FpSpread.UseClipboard = false;
// シート設定
sheet.PageSize = sheet.RowCount;
// 列幅の設定
sheet.Columns[0].Width = 60;
sheet.Columns[1].Width = 90;
sheet.Columns[2].Width = 151;
sheet.Columns[3].Width = 70;
sheet.Columns[4].Width = 90;
sheet.Columns[5].Width = 63;
sheet.Columns[6].Width = 70;
// 縦方向の揃え位置を中央に設定
sheet.DefaultStyle.VerticalAlign = VerticalAlign.Middle;
// 各列のセル型を設定
FarPoint.Web.Spread.LabelCellType lbl = new FarPoint.Web.Spread.LabelCellType();
sheet.Columns[5].HorizontalAlign = HorizontalAlign.Right;
sheet.Columns[0, 5].CellType = lbl;
FarPoint.Web.Spread.IntegerCellType intcell = new FarPoint.Web.Spread.IntegerCellType();
sheet.Columns[6].CellType = intcell;
}
private void setsumsheet(FarPoint.Web.Spread.SheetView sheet)
{
sheet.RowCount = 2;
sheet.ColumnCount = 4;
// 数式 製品数
sheet.Cells[0, 0].Formula = "COUNTIF(製品在庫!B1:B12,\"乳製品\")";
sheet.Cells[0, 1].Formula = "COUNTIF(製品在庫!B1:B12,\"清涼飲料水\")";
sheet.Cells[0, 2].Formula = "COUNTIF(製品在庫!B1:B12,\"ビール\")";
sheet.Cells[0, 3].Formula = "COUNTIF(製品在庫!B1:B12,\"焼酎\")";
// 数式 在庫計
sheet.Cells[1, 0].Formula = "SUMIF(製品在庫!B1:B12,\"乳製品\",製品在庫!G1:G12)";
sheet.Cells[1, 1].Formula = "SUMIF(製品在庫!B1:B12,\"清涼飲料水\",製品在庫!G1:G12)";
sheet.Cells[1, 2].Formula = "SUMIF(製品在庫!B1:B12,\"ビール\",製品在庫!G1:G12)";
sheet.Cells[1, 3].Formula = "SUMIF(製品在庫!B1:B12,\"焼酎\",製品在庫!G1:G12)";
// 列ヘッダ
sheet.ColumnHeader.Cells[0, 0].Text = "乳製品";
sheet.ColumnHeader.Cells[0, 1].Text = "清涼飲料水";
sheet.ColumnHeader.Cells[0, 2].Text = "ビール";
sheet.ColumnHeader.Cells[0, 3].Text = "焼酎";
// 行ヘッダ
sheet.RowHeader.Cells[0, 0].Text = "製品数";
sheet.RowHeader.Cells[1, 0].Text = "在庫計";
sheet.DefaultStyle.HorizontalAlign = HorizontalAlign.Right;
// 列幅の設定
sheet.Columns[0].Width = 155;
sheet.Columns[1].Width = 155;
sheet.Columns[2].Width = 155;
sheet.Columns[3].Width = 155;
sheet.RowHeader.Width = 52;
}
}
|
Partial Public Class differentsheetformula
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
Return
End If
' シート追加
Dim sht As New FarPoint.Web.Spread.SheetView()
FpSpread1.Sheets.Add(sht)
' シート名設定
FpSpread1.Sheets(0).SheetName = "製品在庫"
FpSpread1.Sheets(1).SheetName = "製品種別集計"
FpSpread1.ClientAutoCalculation = True
' セル型の自動設定を無効化
FpSpread1.ActiveSheetView.DataAutoCellTypes = False
' データ連結
Dim ds As New System.Data.DataSet()
ds.ReadXml(MapPath("../App_Data/datanum1.xml"))
FpSpread1.DataSource = ds
FpSpread1.Sheets(0).ColumnCount = 7
Dim sheet1 As FarPoint.Web.Spread.SheetView = FpSpread1.Sheets(0)
Dim sheet2 As FarPoint.Web.Spread.SheetView = FpSpread1.Sheets(1)
' SPREAD初期化
InitSpread(sheet1)
' 集計シート設定
setsumsheet(sheet2)
' フォントサイズの設定
sheet1.DefaultStyle.Font.Size = FontUnit.Parse("80%")
sheet1.ColumnHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%")
sheet1.RowHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%")
sheet1.SheetCorner.DefaultStyle.Font.Size = FontUnit.Parse("80%")
' フォントサイズの設定
sheet2.DefaultStyle.Font.Size = FontUnit.Parse("80%")
sheet2.ColumnHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%")
sheet2.RowHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%")
sheet2.SheetCorner.DefaultStyle.Font.Size = FontUnit.Parse("80%")
End Sub
Private Sub InitSpread(ByVal sheet As FarPoint.Web.Spread.SheetView)
' SPREAD設定
sheet.FpSpread.CommandBar.Visible = False
sheet.FpSpread.CssClass = "spreadStyle"
sheet.FpSpread.UseClipboard = False
' シート設定
sheet.PageSize = sheet.RowCount
' 列幅の設定
sheet.Columns(0).Width = 60
sheet.Columns(1).Width = 90
sheet.Columns(2).Width = 151
sheet.Columns(3).Width = 70
sheet.Columns(4).Width = 90
sheet.Columns(5).Width = 63
sheet.Columns(6).Width = 70
' 縦方向の揃え位置を中央に設定
sheet.DefaultStyle.VerticalAlign = VerticalAlign.Middle
' 各列のセル型を設定
Dim lbl As New FarPoint.Web.Spread.LabelCellType()
sheet.Columns(5).HorizontalAlign = HorizontalAlign.Right
sheet.Columns(0, 5).CellType = lbl
Dim intcell As New FarPoint.Web.Spread.IntegerCellType()
sheet.Columns(6).CellType = intcell
End Sub
Private Sub setsumsheet(ByVal sheet As FarPoint.Web.Spread.SheetView)
sheet.RowCount = 2
sheet.ColumnCount = 4
' 数式 製品数
sheet.Cells(0, 0).Formula = "COUNTIF(製品在庫!B1:B12,""乳製品"")"
sheet.Cells(0, 1).Formula = "COUNTIF(製品在庫!B1:B12,""清涼飲料水"")"
sheet.Cells(0, 2).Formula = "COUNTIF(製品在庫!B1:B12,""ビール"")"
sheet.Cells(0, 3).Formula = "COUNTIF(製品在庫!B1:B12,""焼酎"")"
' 数式 在庫計
sheet.Cells(1, 0).Formula = "SUMIF(製品在庫!B1:B12,""乳製品"",製品在庫!G1:G12)"
sheet.Cells(1, 1).Formula = "SUMIF(製品在庫!B1:B12,""清涼飲料水"",製品在庫!G1:G12)"
sheet.Cells(1, 2).Formula = "SUMIF(製品在庫!B1:B12,""ビール"",製品在庫!G1:G12)"
sheet.Cells(1, 3).Formula = "SUMIF(製品在庫!B1:B12,""焼酎"",製品在庫!G1:G12)"
' 列ヘッダ
sheet.ColumnHeader.Cells(0, 0).Text = "乳製品"
sheet.ColumnHeader.Cells(0, 1).Text = "清涼飲料水"
sheet.ColumnHeader.Cells(0, 2).Text = "ビール"
sheet.ColumnHeader.Cells(0, 3).Text = "焼酎"
' 行ヘッダ
sheet.RowHeader.Cells(0, 0).Text = "製品数"
sheet.RowHeader.Cells(1, 0).Text = "在庫計"
sheet.DefaultStyle.HorizontalAlign = HorizontalAlign.Right
' 列幅の設定
sheet.Columns(0).Width = 155
sheet.Columns(1).Width = 155
sheet.Columns(2).Width = 155
sheet.Columns(3).Width = 155
sheet.RowHeader.Width = 52
End Sub
End Class
|
<%@ Page MasterPageFile="~/MasterPage.master" Language="c#" AutoEventWireup="true"
Inherits="differentsheetformula" CodeFile="differentsheetformula.aspx.cs" %>
<%@ Register Assembly="FarPoint.Web.SpreadJ" Namespace="FarPoint.Web.Spread" TagPrefix="FarPoint" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<farpoint:FpSpread ID="FpSpread1" runat="server">
<CommandBar BackColor="Control" ButtonFaceColor="Control" ButtonHighlightColor="ControlLightLight"
ButtonShadowColor="ControlDark" />
<Sheets>
<farpoint:SheetView SheetName="Sheet1">
</farpoint:SheetView>
</Sheets>
</farpoint:FpSpread>
</asp:Content>
|
|