- ベストアンサー
ネット将棋サークル主催者が対局履歴の形式変換に困っています
- ネット将棋サークルの主催者が新しい活動場所に移行したものの、対局履歴の形式変換に困っています。
- C言語は大袈裟だし、エクセルの関数でできればと思っていますが、ちょっと複雑でしょうか?いろんな案を教えて欲しいです。
- 新しい形式の棋譜と今までの形式の棋譜の例を挙げており、何を使って変換するのが良いかアドバイスを求めています。
- みんなの回答 (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以下に貼り付けて下さい。 以上です。
お礼
ありがとうございます まさにそのような対応表を参照する方式を考えていました。 20行ほどの対応表でOKとは 予想外でした 当初 駒の種類 x スタート升目数 x 到着升目数 x先手後手 の行数が必要と考え いきずまっておりました。 本当にありがとうございます。