2025-03-22
あるWINDOWS用のデータ処理コードで作成された繰り返しのあるテキストデータリストをエクセルに張り付け、n行おきに合計したまとめ表を作る際のやり方をまとめた。
一般には下記の13.14.の繰り返しコピペの際のカーソル移動テクニックと15.以下に記載したsumproductにおけるn関数の使用方法とそのChatGPTの解説が役立つと思う。
某コードの出力データに対するエクセルによる合計処理方法
1. WINDOWSで某コードを流す。最初に入力ファイルフォルダのフォルダマークをクリックし、cmd とコマンド行に入力した後、表示されるコマンド窓でコマンドスクリプトファイルを実行する。
2. 出力されたデータファイルのテキストデータを丸ごとコピーする。
(この出力データは約3万行からなるが、最初に約100行の頭部分があり、その後、約200行のND部分が空白行を挟んで約150回繰り返される構成になっている。
以下ではこの繰り返しで繰り返される各ND部分を上からND1部分、ND2部分などと称する。)
3. エクセルの新規シートに張り付け
4. 頭の部分の主要データラインのみ固定長フィールドで区切る(数値区切り個所がND区切りと一致していないため)
5. 後ろに繰り返し続くND部分(途中空白行が規則的に挿入されている)を最期まで選択(C+S+↓を数回繰り返すとエクセルの最後まで選択されるが、一回C+S+↑を押すとデータの最後の行まで戻る。
6. 全体のコピペが終了したらコンマ、タブ区切りでND部分を区切る。
7. その際、空白に加えて、指定区切り文字として"("を追加する。これは"("に続く数値が後でエクセルでの計算に用いるためにその部分を1セルの数値セルにするためである。
8. ND1部分を対象に以下の処理をする。
まず、このセルを参照するセルを右側の空セルでリンクし、その列の空欄のND1データの記載個所の行全体にコピペする。
9. 次の列にはMID関数を用いてND1内の文字列から得た数値を表示する。
10. 更にその右側列にこの数値と上記の”(”に続く数値とND1内の対応するセルの積で求めたセルを作成し、ND1領域全体を対象にコピペする。
11. この表の上に各列の解説セルをもとの左側のデータのセルを参照して作成する。
12. このようにしてND1領域の右側に作成した表全体をコピーし、ND2領域以下の右側に繰り返しペーストする。
13. ND領域数が150回繰り返されるので、10回程度ペーストしたらその10領域分をコピーしなおして、ペーストする。
14. その際にC+S+↓の繰り返しののちに、C+S+↑を一回行い、↓を押すとペーストすべき最初の空白行にカーソルを移動できる。
15. エクセルではこの繰り返し表の中のデータを指定した行間隔ごとに合計する必要が出てくる。その際は以下の関数を使う。
=SUMPRODUCT((MOD(ROW(R11170:R34190)-ROW(R11170),240)=0)*(N(R11170:R34190)))
これはR列の11170行から34190行までを対象に240行おきのセルを選び、そのセルが数値の場合だけ(文字や関数でない場合だけ)の合計を計算するようになっている。即ち、*(N(R11170:R34190)を乗じることで、文字や関数が対象領域のセルに含まれる場合に生じるエラーに防ぐようにできている。
この式の動作を解説してください
ChatGPTが解説すると、以下のようになります。
*******************
=SUMPRODUCT((MOD(ROW(R130:R34190)-ROW(R130),240)=0)*(N(R130:R34190)))
の(N(R130:R34190)))の意味について解説してください
ChatGPT:
(N(R130:R34190)) の意味について
この部分は、N() 関数を使ってセルの値を数値に変換する処理 です。具体的には以下のように動作します。
N(R130:R34190) の役割
Excel の N() 関数は、セルの内容を 数値化 するために使われます。
この関数は以下のような動作をします:
セルの内容 N(セルの値) の結果
100 (数値) 100
"ABC" (文字列) 0
TRUE (論理値) 1
FALSE (論理値) 0
#N/A (エラー) #N/A (変換されない)
�セ記事を書く
�セコメントをする