当事務所用)BASEの売上csvファイルから、売掛金a/cと支払手数料a/cの2つの仕訳を作成するには?
問題の所在
個人事業主の方で、BASEを利用されているので、BASEから提供されるデータで仕訳インポートを作成したい。
提供されるcsvデータは4つで、そのうち売上csvの表のファイルが、1行毎に、販売商品の販売価格とBASEの手数料と、控除した入金額を表示する形式。
なので、当事務所の仕訳インポートエクセルの仕様上は、元のファイルの1行を2行に複製加工のひと手間を加えれば足りる。
その複製加工は、
1)1行目2行目3行目 を 1行目1行目2行目2行目3行目3行目 と加工する、
2)1行目2行目3行目 を 1行目2行目3行目1行目2行目3行目 と加工する、
のいずれでも大丈夫だし、従来では、1)にしてかつ金額0円のダミー行をバッファーで設けてやっていたが、、、、
あまり美しくないので (^^)、今回は2)でトライ。
結論
INDEX(A:A, INT((ROW(A1)-1)/2)+1)
でOK。
理由
geminiで、「エクセル 元の表の右余白に、1行目2行目3行目、、、を 1行目1行目2行目2行目3行目3行目、、、 と行を増やした表を作成する。元の表の行数は不特定、任意。関数で解決したい。元の表の列数はAからVで固定で、行を増やす表の一番左上のセルはy2」でググったときの回答は以下:
元の表の各行を2行ずつ繰り返して表示するには、INDEX関数とROW関数を組み合わせるのが一番スマートです。
セル Y1(新しい表の左上)に以下の数式を入力し、右方向(V列分)および下方向へコピーしてください。
excel
=INDEX(A:A, INT((ROW(A1)-1)/2)+1)
コードは注意してご使用ください。
仕組みの解説
INT((ROW(A1)-1)/2)+1: この部分がポイントです。下にコピーするにつれて「1, 1, 2, 2, 3, 3…」という数字を生成します。INDEX(A:A, ...): 上記で計算した行番号を基に、A列から値を持ってきます。右にコピーするとB:B,C:Cと自動で切り替わります。
ヒント
- 3行ずつにしたい場合は、数式の「2」を「3」に変えるだけでOKです。
- 元の表が1行目(見出しなど)を飛ばして2行目から始まる場合は、最後の
+1を+2に調整してください。
この方法で、データの行数が増えても数式を下にドラッグするだけで対応できます。データの最終行まで数式をコピーして動作を確認してみてください。
===============
補足
いつも生成AIを利用するときと同様ですが、特にエクセルの場合には、もう、極力、具体的にプロンプトを書き込むのがベター。
特に gemini では、「テキトーにスタートし、新しいタブを追加していってリライトしていく」でOK。
■

