前提・実現したいこと
複数のテーブルを結合して各列の数値の合計列を新たに作成したいです。
http://hanatyan.sakura.ne.jp/patio/read.cgi?no=174
を参考にしてテストしています。
実際は何万ものデータのCSVを読み込んで運用します。
発生している問題・エラーメッセージ
該当データがない場合のセルが空白となり、一部の列が計算されません。
空白セルを0として計算させたいのですが方法がわかりません。
現在の結果
HIN CODE1 CODE2 CODEME1 CODEME2 total
100 101 102
110 111 112
300 121 142 221 242 726
310 131 152 231 252 766
200 201 202
210 211 212
希望する結果
HIN CODE1 CODE2 CODEME1 CODEME2 total
100 101 102 0 0 203
110 111 112 0 0 223
300 121 142 221 242 726
310 131 152 231 252 766
200 0 0 201 202 403
210 0 0 211 212 423
該当のソースコード
Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim table1 As New DataTable() table1.Columns.Add("HIN") table1.Columns.Add("CODE1", GetType(Decimal)) table1.Columns.Add("CODE2", GetType(Decimal)) table1.Rows.Add("100", "101", "102") table1.Rows.Add("110", "111", "112") table1.Rows.Add("300", "121", "142") table1.Rows.Add("310", "131", "152") table1.PrimaryKey = New DataColumn() {table1.Columns("HIN")} table1.AcceptChanges() Dim table2 As New DataTable() table2.Columns.Add("HIN") table2.Columns.Add("CODEME1", GetType(Decimal)) table2.Columns.Add("CODEME2", GetType(Decimal)) table2.Rows.Add("200", "201", "202") table2.Rows.Add("210", "211", "212") table2.Rows.Add("300", "221", "242") table2.Rows.Add("310", "231", "252") table2.PrimaryKey = New DataColumn() {table2.Columns("HIN")} table2.AcceptChanges() '★ Merge メソッドで結合 ★ Dim table0 As New DataTable() table0.Merge(table1) table0.Merge(table2) table0.Columns.Add("total", GetType(Decimal), "CODE1 + CODE2 + CODEME1 + CODEME2") DataGridView1.DataSource = table0 End Sub End Class
試したこと
DataGridView1.DefaultCellStyle.NullValue = "0"
とすると空白セルが0になりますが、合計も0になってしまいます。
HIN CODE1 CODE2 CODEME1 CODEME2 total
100 101 102 0 0 0
110 111 112 0 0 0
300 121 142 221 242 726
310 131 152 231 252 766
200 0 0 201 202 0
210 0 0 211 212 0
補足情報(FW/ツールのバージョンなど)
OS Windows10
VB.NET
Microsoft Visual Studio Community 2017
Version 15.6.7
VisualStudio.15.Release/15.6.7+27428.2043
Microsoft .NET Framework
Version 4.8.04084
回答2件
あなたの回答
tips
プレビュー