なんでもエクセル(Nandemo Excel)

何でもエクセルでやってしまう そこのあなた、ようこそ

Power Query

Power Query:いずれかの検索ワードに部分一致する行を抽出する

久々のパワークエリネタです。検索値が用意したリストとデータ一致するかをチェックする方法はいくつかあるんですけど、「~を含む」を検索する場合は方法が限られてきます。 上記の画像では、「電気・水道・ガス」のいずれかのワードを含む値をテーブル1か…

Power Query:複数ファイルの1つ目のシートを読み込んで結合する

多分一番要望として多いからだと思うんですが、複数のファイルを一括で読み込むクエリの質問が増えてきています。 ただ、ヘルパークエリどころかパワークエリがどんなものかすら、よくわからないまま使っている人が多い印象です。 どうもネットを検索してみ…

Power Query:新規のクエリを作成する

今更なんですが、結構この説明をするのに時間を取られることがありまして…… 何もない状態から「空のクエリ」を作る方法を下記にまとめています。 エクセル上(ブック)からクエリを作成する方法 Power Queryエディタからクエリを作成する方法1 Power Queryエ…

Power Query:列名とデータ型を揃える

2つのテーブルを縦に結合する時は、列の名称とデータ型が揃っている必要がありますよね。データ型については、結合した時に揃っていない列が any型になるだけですみますが、列名が異なると別々の列として結合されてしまいます。 「テーブル1」・「テーブル2…

Power Query:追加された情報/削除された情報を読み込む

2025年は、基礎的な操作についても取り上げていきたいと考えています。というわけで今回は、古いテーブルと新しいテーブルを突き合わせて、古いテーブルにはない追加された行だけを抜き出す方法について考えてみます。 いわゆる差分抽出(不一致クエリ)とい…

Power Query:特定の文字が含まれる値を置換する

パワークエリでの文字列の変換には、「値の置換(Table.ReplaceValue)」を使いますよね。「A」を「B」に置き換えするような場面なら、これでできます。 ただパワークエリでは、今のところワイルドカードや正規表現が使えません。「A BCD」や「BCDA」のよう…

Power Query:クエリ名の文字列からクエリを呼び出す

実のところ必要性はそれほど感じていないんですが、やれるかどうかに興味があったので「クエリ名の文字列からクエリを呼び出す方法」を考えてみました。 予め、上記の3つのテーブルは「テーブル1」「テーブル2」「テーブル3」として、クエリを作成済(接続…

Power Query:AとBのリストを比較して抜き出す

慣れないと混乱すると思いますので、2つのリストを使って比較抽出する方法をまとめておきます。 「A」と「B」のリストがあるものとして、 AとBのすべて = List.Distinct(A & B) もしくは = List.Union({A, B}) AとBで重複するものだけ = List.Intersect…

Power Query・数式/関数:法人名から法人格と組織名を分ける

会社名(法人組織名)から、法人格(「株式会社」など)とそれ以外を分ける方法について。 関数を使って数式でやるにしても、パワークエリでやるにしても、法人格のリストは用意したほうがいいです。 最新のエクセルなら、TEXTSPLITが使えるので数式のほうが…

Power Query:複数ブックの複数シートを結合して読み込む

今回は「複数のブックの複数のシートを結合して読み込む」クエリの作り方を説明します。ただし、このクエリはマウス操作だけではできません。Power Query エディタを開いて編集する必要があります。 「複数ブックを読み込んで縦に結合する」とか「複数シート…

Power Query:複数のCSVファイルを結合して読み込む

以前に一回やったんですが、もう少し手軽にできないかとやってみました。複数の CSVファイルを、なるべく手間をかけずに結合して読み込んでみます。 指定フォルダに接続する CSVファイルを縦に結合する式を入力する おまけ:ファイル名列を追加したい場合 指…

数式/関数/パワークエリ:金種を計算する

金種計算(紙幣や硬貨などの通貨の枚数を計算する)については、昔から色んなやり方がありますし、条件を絞れば金種表は比較的簡単に計算できます。ただ、金額範囲と通貨範囲を指定してスピルで計算しようとすると、少し面倒になります。 金種自体は「金額を…

関数/数式:縦横が重複しない組み合わせをランダムに作る

当番表やローテーションが被らないよう、ランダムに組み合わせたいと考えた時、従来であれば数式でやるのはそれなりに大変だったんですが、Microsoft365ならそうでもないなと思った次第です。 例えば、5×5の枠に1~5の5つの数字を、縦横(斜めは除外)…

Power Query:購入履歴から返金分を取り除く

購入履歴のデータを読み込むと、途中で間違いに気付いてキャンセルされた履歴も混じってきますよね。集計する際にはいらない情報なんで、今回はこれを取り除いてみようと思います。 今回の購入履歴データについては、下記を前提としています。 当日中のキャ…

Power Query:データ型の自動検出機能を切る

パワークエリでファイルを読み込むと、ソースの下に「変更された型(Changed Type)」が自動的に作成されます。この機能、邪魔だなと思うことないでしょうか。 もちろん判定してくれることに否やはないんですが、必要ない時に勝手に追加されると、思いもよら…

Power Query:列の分割

基本的な機能なので、普通に使う分にはなんてことのない話なんですが。区切り文字を使って列を分割する際の話です。 機能としては至極単純で、区切りたい列を選択して「列の分割」を選ぶだけです。 区切りたい列を選択した状態で右クリック →[列の分割]→[…

Power Query:年を指定して月初と月末のテーブルを作る

何かしらの項目を基準にして集計する際、「A」「B」「C」……とある項目の内、「B」のデータが一つもないと、集計結果のテーブルは「A」「C」……と、歯抜け状態になってしまいます。そういう場合は、予め用意した「A」「B」「C」……テーブルに、集計結果を入れ込…

Power Query:複数のブックの特定のセルを読み込む

指定フォルダに入っている Excelファイルで、単純に「ブックの中のこのセルだけ」を読み込んで結合したい場合の手順をまとめてみました。 まずは参照用のフォルダに同形式のファイルを保存します。全部同じシート名・同じ配置が前提ですのでご注意を。 今回…

Power Query:開始日と終了日から連続する日付リストを作る

Power Queryで開始日から終了日までの連続している日付リストを作る場合、多分 List.Datesを使んじゃないでしょうか。 = List.Dates( 開始日, Duration.Days(終了日-開始日)+1, #duration(1, 0, 0, 0) ) learn.microsoft.com もちろんこれでいいんですけど、…

Power Query:抜けている日付を補って表示する

画像の通りなんですが、元のテーブルに値のない日付を追加して表示したい時は、どうすればいいでしょうか。 この場合、まずは「4/1」から「4/7」までが連番になっている日付テーブルを新規に作ったほうがいいです。元のテーブルは「テーブル1」として読み込…

Power Query:セル内改行された値を行単位で分割する

表計算の世界で「やったら後で後悔することランキング」をとったら、上位3以内に入ってくるのは「セルに複数の情報を入力する」だと思います。因みに他の2つは「同じ形式の表をシート単位で量産する」と「セル結合で入力を省略する」です。異論は認めます…

Power Query:マージ列の展開時に行の順番がずれないようにする

クエリのマージを実行した後で、結合した列を展開(Table.ExpandTableColumn)した時に、行の順番がずれてしまったことはないでしょうか。 例えば下のようにテーブル1とテーブル2をマージして、「テーブル2」列から必要な列を展開すると、 「名前」列が元の…

Power Query:要素数の異なる配列からテーブルを作る

個数の合わない配列(ジャグ配列)を、単純に1テーブルに変換しようとすると、エラーを起こしてしまいます。 文章で読んでもピンとこないかもしれませんが、例えば要素数が 10個の配列(例えば「{1..10}」)を 3分割した場合、最後の配列の要素数は 1つにな…

Power Query:カタカナをローマ字表記に変換する

「カタカナをローマ字表記に変換する」記事は時々あります。数式でも WebAPIの力を借りれば簡単にできます。とはいえデータが個人情報の場合は、WebAPIで検索表示させるのは情報漏洩のリスクがあるので、避けたい向きもあるのではないでしょうか。というわけ…

Power Query:重複している行を抽出する

簡単かと思ってやってみたら、意外と苦戦するかもしれません。「重複を省いて抽出」ではなく「重複している行を抽出」したい場合、どうすればいいでしょうか。 こういう時、エクセル感覚だと「それぞれの行に、一つ上までの行を参照する COUNTIF関数を仕込ん…

Power Query:リストを使って抽出する

クエリのステップの中で、複数キーを指定して抽出したい時、数が多くなれば抽出用のリストを用意することになるでしょう。ただ「~と一致する」なら抽出条件に List.Containsを使えばいいんですが、「~を含む」を条件にしたい場合には、そうはいきません。 …

Power Query:上と同じ値を非表示にする(グループ表示)

空いている行を上の値で埋めるのは「下方向にフィル」で簡単にできますが、その逆はどうでしょうか。もちろん「上方向にフィル」という意味ではなくてです。 つまり画像のように、先頭の値以外を表示しない設定です。「ピボットテーブルでやれ」、「クエリで…

Power Query:複数のシートのデータを縦結合する(ヘルパークエリ編)

複数のブックを統合するのに標準機能でやると、出現するのがヘルパークエリなんですが、これが苦手な人も多いのではないでしょうか。ただ、慣れれば他の用途にも応用できますので、是非とも仕組みを理解して活用して欲しいところです。 今回は「複数のシート…

Power Query:ソースの読み込みを条件式で切り替える

ソースの読み込みを条件式で切り替えた場合、該当しないほうのデータは読み込まれるでしょうか。答えはノーです。つまり読み込む情報を小分けにしておいて、必要に応じて切り替えて使ったほうが処理は断然早くなります。 例えば A列が1行、B列が100万行のテ…

Power Query:ソースの読み込みエラーを回避する(DataSource.Error)

皆さんは、クエリでソースを読み込もうとしたらエラーが起きたことはないでしょうか。私はよくあります。 固定のパスでフォルダを参照していると、ふとした拍子にリンクが切れてしまうことがあるからです。 こんな時は慌てずに、右上の「設定の編集」ボタン…