Skip to content

Instantly share code, notes, and snippets.

@NonAbility
NonAbility / Q1_WebTable_Base
Created November 2, 2024 17:57
衆議院選挙の比例代表開票結果の全国集計を Power Query で効率的に集計できないかの考察:例 2024/10/27執行 宮城県選管発表 html な table ( https://senkyo-sokuhou.pref.miyagi.jp/shuugi-koukai/HTML/kaihyoc_hi.html )。事前にこのURLを貼り付けたセルを "R_URL" と名前定義した上で、以下の5つのクエリーにより、固有の市区町村/列見出しに影響されないリスト型ひな形集計を作る。
let
// 事前準備1:元データを特定の列名を使わず(Column1・2・3・・・にする)、行Noを付けて素読みする(接続専用)。事前にURLを指定するセルの名前定義を忘れない。
R_URL = Excel.CurrentWorkbook(){[Name="R_URL"]}[Content]{0}[Column1],
ソース = Web.Page(Web.Contents(R_URL)),
// 以下1行はWebページによって要カスタマイズ
フィルターされた行 = Table.SelectRows(ソース, each ([Source] = "Table")),
// 以下1行はWebページによって要カスタマイズ
削除された他の列 = Table.SelectColumns(フィルターされた行,{"Data"}),
展開されたData = Table.Combine(削除された他の列[Data]),
行No = Table.AddIndexColumn(展開されたData, "行No", 1, 1, Int64.Type)
@NonAbility
NonAbility / Q5_WebTable_Reconstruct_List
Last active November 2, 2024 17:36
Q5_WebTable_Reconstruct_List:2024/10/27執行第50回衆議院選挙比例代表宮城選挙区開票結果( https://senkyo-sokuhou.pref.miyagi.jp/shuugi-koukai/HTML/kaihyoc_hi.html )を例にして、Power Queryで汎用的なリスト形式に読み込む考察5/5:行見出しリストを元に、列見出しリストを総組み合わせ、データ部リストを行No/列Noでマージしてリスト形式に再構成
let
ソース = Q3_WebTable_Row_List,
w列見出し = Table.AddColumn(ソース, "w列見出し", each Q2_WebTable_Column_List),
展開されたw列見出し = Table.ExpandTableColumn(w列見出し, "w列見出し", {"列No", "列名"}, {"列No", "列名"}),
マージされたクエリ数 = Table.NestedJoin(展開されたw列見出し, {"行No", "列No"}, Q4_WebTable_Data_List, {"行No", "列No"}, "Q_WebTable_Data", JoinKind.LeftOuter),
展開されたQ_WebTable_Data = Table.ExpandTableColumn(マージされたクエリ数, "Q_WebTable_Data", {"値"}, {"値"}),
列No1除外フィルター = Table.SelectRows(展開されたQ_WebTable_Data, each ([列No] <> 1)),
変更された型 = Table.TransformColumnTypes(列No1除外フィルター,{{"列No", Int64.Type}, {"列名", type text}}),
削除された列 = Table.RemoveColumns(変更された型,{"行No"})
in
@NonAbility
NonAbility / Q4_WebTable_Data_List
Last active November 2, 2024 17:36
Q4_WebTable_Data_List:2024/10/27執行第50回衆議院選挙比例代表宮城選挙区開票結果( https://senkyo-sokuhou.pref.miyagi.jp/shuugi-koukai/HTML/kaihyoc_hi.html )を例にして、Power Queryで汎用的なリスト形式に読み込む考察4/5:データ部を行No/列Noを付けてリスト化
let
ソース = Q1_WebTable_Base,
削除された列 = Table.RemoveColumns(ソース,{"Column1"}),
削除された最初の行 = Table.Skip(削除された列,3),
ピボット解除された他の列 = Table.UnpivotOtherColumns(削除された最初の行, {"行No"}, "属性", "値"),
#"名前が変更された列 " = Table.RenameColumns(ピボット解除された他の列,{{"属性", "列No"}}),
置き換えられた値 = Table.ReplaceValue(#"名前が変更された列 ","Column","",Replacer.ReplaceText,{"列No"}),
変更された型 = Table.TransformColumnTypes(置き換えられた値,{{"列No", Int64.Type}})
in
変更された型
@NonAbility
NonAbility / Q3_WebTable_Row_List
Last active November 2, 2024 17:36
Q3_WebTable_Row_List:2024/10/27執行第50回衆議院選挙比例代表宮城選挙区開票結果( https://senkyo-sokuhou.pref.miyagi.jp/shuugi-koukai/HTML/kaihyoc_hi.html )を例にして、Power Queryで汎用的なリスト形式に読み込む考察3/5:行見出し(市区町村)を行Noを付けてリスト化
let
ソース = Q1_WebTable_Base,
削除された他の列 = Table.SelectColumns(ソース,{"行No", "Column1"}),
// 以下1行は、Webページによっては要カスタマイズ
削除された最初の行 = Table.Skip(削除された他の列,2),
昇格されたヘッダー数 = Table.PromoteHeaders(削除された最初の行, [PromoteAllScalars=true]),
変更された型 = Table.TransformColumnTypes(昇格されたヘッダー数,{{"開票区名", type text}}),
選挙種別 = Table.AddColumn(変更された型, "選挙種別", each "衆議院"),
投票種別 = Table.AddColumn(選挙種別, "投票種別", each "比例代表"),
執行日 = Table.AddColumn(投票種別, "執行日", each #date(2024,10,27)),
@NonAbility
NonAbility / Q2_WebTable_Column_List
Last active November 2, 2024 17:35
Q2_WebTable_Column_List:2024/10/27執行第50回衆議院選挙比例代表宮城選挙区開票結果( https://senkyo-sokuhou.pref.miyagi.jp/shuugi-koukai/HTML/kaihyoc_hi.html )を例にして、Power Queryで汎用的なリスト形式に読み込む考察2/5:列見出しを列Noを付けてリスト化
let
ソース = Q1_WebTable_Base,
見出し行選択フィルター = Table.SelectRows(ソース, each [行No] = 2),
ピボット解除された他の列 = Table.UnpivotOtherColumns(見出し行選択フィルター, {"行No"}, "属性", "値"),
復帰記号の置換 = Table.ReplaceValue(ピボット解除された他の列,"#(cr)","",Replacer.ReplaceText,{"値"}),
改行記号の置換 = Table.ReplaceValue(復帰記号の置換,"#(lf)","",Replacer.ReplaceText,{"値"}),
復帰改行記号の置換 = Table.ReplaceValue(改行記号の置換,"#(cr)#(lf)","",Replacer.ReplaceText,{"値"}),
名前が変更された列 = Table.RenameColumns(復帰改行記号の置換,{{"属性", "列番号"}, {"値", "列名"}}),
削除された他の列 = Table.SelectColumns(名前が変更された列,{"列番号", "列名"}),
列No = Table.AddIndexColumn(削除された他の列, "列No", 1, 1, Int64.Type),
@NonAbility
NonAbility / Q1_WebTable_Base
Last active November 2, 2024 17:35
Q1_WebTable_Base:2024/10/27執行第50回衆議院選挙比例代表宮城選挙区開票結果( https://senkyo-sokuhou.pref.miyagi.jp/shuugi-koukai/HTML/kaihyoc_hi.html )を例にして、Power Queryで汎用的なリスト形式に読み込む考察1/5:htmlのtableを行Noを付けて列名はColumn1・2・3・・・のまま素読み
let
R_URL = Excel.CurrentWorkbook(){[Name="R_URL"]}[Content]{0}[Column1],
ソース = Web.Page(Web.Contents(R_URL)),
// 以下1行はWebページによって要カスタマイズ
フィルターされた行 = Table.SelectRows(ソース, each ([Source] = "Table")),
// 以下1行はWebページによって要カスタマイズ
削除された他の列 = Table.SelectColumns(フィルターされた行,{"Data"}),
展開されたData = Table.Combine(削除された他の列[Data]),
行No = Table.AddIndexColumn(展開されたData, "行No", 1, 1, Int64.Type)
in
@NonAbility
NonAbility / T_Config.md
Last active April 1, 2024 05:00
2024/3/30現在
No R_Area 特記事項 R_Main_URL R_Encode_CSV R_DelayMins_Daily R_SignChg_Transmission R_URL_Prefix_Past R_URL_Suffix_Past R_StartDate_Past R_Past_ContainsOf_ThisMonth R_URL_Prefix_Latest R_URL_Suffix_Latest R_StartDate_Latest
0 メインのWebページ CSVエンコード 日付変更時の遅延時間(分) 連系線の正負逆転 過去月(または当月)のダウンロードURLの接頭子 過去月(または当月)のダウンロードURLの拡張子 過去月の始期 過去月に当月を含む(1)か否(0)か 当月のダウンロードURLの接頭子 当月のダウンロードURLの拡張子 至近の始期
1 01_北海道 過去月は2024/3末時点で不明。
当月は当日を含めた2日間だけ。
時刻が開始~終了時刻表記
https://denkiyoho.hepco.co.jp/supply_demand_results.html 932 40 1 ? _01.csv ? 0 https://denkiyoho.hepco.co.jp/area/data/ _hokkaido_jukyu.csv (前日)
2 02_東北 過去月は別ページに2024/2から。当月分が特殊で2024/3当月分はなぜか3/21開始 https://setsuden.nw.tohoku-epco.co.jp/realtime_jukyu.html 932 40 1 https://setsuden.nw.tohoku-epco.co.jp/common/demand/eria_jukyu_ _02.csv 2024/2/1 0 https://setsuden.nw.tohoku-epco.co.jp/common/demand/re
@NonAbility
NonAbility / sheet6.vba
Last active March 23, 2024 09:12
日スライサーが変更されたときに実行するマクロ
Option Explicit
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
'
' 日スライサーが変更されたときに実行するマクロ
'
Call ScrOff
Call Ref2
Call ScrOn
Call Save
@NonAbility
NonAbility / sheet3.vba
Last active March 23, 2024 09:12
年月スライサーが変更されたときに実行するマクロ
Option Explicit
Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)
'
' 年月スライサーが変更されたときに実行するマクロ
'
Call ScrOff
Call Pre
Call chgFirstD
Call Ref1
@NonAbility
NonAbility / Module1.vba
Last active March 23, 2024 09:10
「エリア需給実績グラフ」のワンアクション化VBAのための、基本プロシージャ7つ
Option Explicit
Sub Pre()
'
' URLリストを更新するマクロ
'
Dim ws2 As Worksheet ' 2_DL_URL_List のワークシート変数宣言
Dim tbl2 As ListObject ' Q_DL_URL_List のリストオブジェクト変数宣言
' クエリー Q_DL_URL_List を変数にセットする