• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ネット将棋のサークルを主催しています。)

ネット将棋サークル主催者が対局履歴の形式変換に困っています

このQ&Aのポイント
  • ネット将棋サークルの主催者が新しい活動場所に移行したものの、対局履歴の形式変換に困っています。
  • C言語は大袈裟だし、エクセルの関数でできればと思っていますが、ちょっと複雑でしょうか?いろんな案を教えて欲しいです。
  • 新しい形式の棋譜と今までの形式の棋譜の例を挙げており、何を使って変換するのが良いかアドバイスを求めています。

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 Excelの関数を使用した方法です。  尚、新しい形式では、1つのセル内に 1._P7g-7f_P3c-3d という形式の文字列が入力されているものとします。(もし、この前提が間違っている場合には、データーが幾つのセルに分けられていて、どの様に配分されているのかを、補足欄でお知らせ願います)  今仮に、新しい形式で入力されたデーターが、Sheet1のA列の2行目以下に存在していて、それを以前の形式に修正したデーターを、Sheet1のB列に表示させるものとします。  まず、Book内の適当な場所(例えば、Sheet2のA2~D10)に以下のリストを作成して下さい。    A列 B列 C列 D列 2行目 P  歩  a  一 3行目 R  飛  b  二 4行目 B  角  c  三 5行目 K  王  d  四 6行目 G  金  e  五 7行目 S  銀  f  六 8行目 N  桂  g  七 9行目 (?)  香  h  八 10行目      i  九  尚、香車に対応するアルファベットが不明なため、(?)を入れていますが、実際に使用するためには、正しい文字に替えて下さい。  次に、Sheet1のB2セルに次の関数を入力して下さい。 =IF(INDEX($A$2:$A$9999,INT(ROWS($1:2)/2))="","",ROWS($1:1)&" "&IF(MOD(ROWS($1:2),2),"△","▲")&MID(INDEX($A$2:$A$9999,INT(ROWS($1:2)/2)),8+7*MOD(ROWS($1:2),2),1)&VLOOKUP(MID(INDEX($A$2:$A$9999,INT(ROWS($1:2)/2)),9+7*MOD(ROWS($1:2),2),1),Sheet2!$C$2:$D$10,2)&VLOOKUP(MID(INDEX($A$2:$A$9999,INT(ROWS($1:2)/2)),4+7*MOD(ROWS($1:2),2),1),Sheet2!$C$2:$D$10,2,0)&"("&MID(INDEX($A$2:$A$9999,INT(ROWS($1:2)/2)),5+7*MOD(ROWS($1:2),2),1)&MATCH(MID(INDEX($A$2:$A$9999,INT(ROWS($1:2)/2)),6+7*MOD(ROWS($1:2),2),1),Sheet2!$C$2:$C$10)&")"  そして、B2セルをコピーして、B3以下に貼り付けて下さい。  以上です。

linus3030
質問者

お礼

ありがとうございます まさにそのような対応表を参照する方式を考えていました。 20行ほどの対応表でOKとは 予想外でした 当初 駒の種類 x スタート升目数 x 到着升目数 x先手後手 の行数が必要と考え  いきずまっておりました。 本当にありがとうございます。

関連するQ&A