ネ申Excel というものが問題になっていることを知った。簡単な工夫でどうにかできないものか考えてみた。

ここで出てきた科研費とは科学研究費助成事業の略で、国の予算で研究を助成する研究費のようだ。

科学研究費助成事業|日本学術振興会

科学研究費助成事業(学術研究助成基金助成金/科学研究費補助金)は、人文学、社会科学から自然科学まで全ての分野にわたり、基礎から応用までのあらゆる「学術研究」(研究者の自由な発想に基づく研究)を格段に発展させることを目的とする「競争的研究資金」であり、ピアレビューによる審査を経て、独創的・先駆的な研究に対する助成を行うものです。

どうやら、科研費の申請書類の作成が面倒臭いということが、学者の反発を招いているらしい。問題の科研費の書類は下記 Web ページで入手できる。

公募要領・計画調書 | 科学研究費助成事業|日本学術振興会

 

試しに、矢印で示しているファイルをダウンロードしてみた。

image

Excel で開いてみると、いきなりポップアップが表示される。マクロが組まれているようだ。

image

どうやら、1セルにつき一文字を入力する必要があり、その手間がかかるということが問題らしい。

image

確かに、一文字一文字入力していくのは面倒だが、「日本の研究者がみんな揃って怨嗟の声を上げる」ほどの問題だろうか。工夫次第で手間を省くことができるのではないか。

 

神Excelをマクロで攻略してみる

先に今回作成したものを紹介する。

image

マウスで領域を選択し、マクロを起動すると、エディットダイアログが表示され、文字列を編集可能となる。このとき、セルのことは忘れて普通に入力してよい。OK ボタンを押すと、入力した文字列が一セルに一文字ずつ置き換わる。濁点は一文字で表されるよう、変換処理も行っている。

とりあえず、これだけできれば、怨嗟の声を上げるほどのストレスは感じないだろう。

ユーザーの操作は下記を想定した。

  1. ユーザーがマウスで複数のセルを選択する
  2. マクロを呼び出す
  3. ダイアログが表示されるので、文字列を編集し OK ボタンを押す
  4. 選択した複数セルに文字が入力される

これを実現するためのマクロの動作は下記であるとした。

  1. ユーザーが選択した複数セルの文字を連結し、一つの文字列とする
  2. 濁点文字を置換する
  3. テキストボックスに表示し、文字列をユーザーに編集させる
  4. 濁点文字を逆置換する
  5. テキストボックスの文字列を文字単位に分解する
  6. ユーザーが選択したセルに書き戻す

やりたいことさえ決まってしまえば、あとは必要な機能を Google で逆引きしていけばよい。

Excel ウィンドウをアクティブにした状態で、Alt+F11 を押すと、マクロを編集するためのウィンドウが開くので、新規に標準モジュールを挿入し、下記コードを入力。

下記コードは自由に使ってもらって構わないが無保証である。自己責任で使うこと。ただし、大学関係者の使用は禁止とする(理由は後述)。

Sub ネ申Excel攻略マクロ()

    '選択セルの取得
    Dim LoopArea As Range
    Set LoopArea = Selection

    '選択範囲の文字を結合し、文字列を生成する
    Dim text As String
    For i = 1 To LoopArea.Count
        text = text & LoopArea.Cells(i).text
    Next

    '濁音を2語に分解する
    text = DakutenCharConv(text, False)

    '入力ボックスで編集させる
    Dim newText As String
    newText = InputBox("", "テキストの編集", text)
    If newText <> "" Then
        text = newText
    End If

    '濁点を1語に結合する
    text = DakutenCharConv(text, True)

    '選択セルに書き戻す
    For i = 1 To LoopArea.Count
        LoopArea.Cells(i) = Mid(text, i, 1)
    Next

End Sub

Function DakutenCharConv(str As String, inverse As Boolean) As String

    Dim hiragana As String
    Dim hiradaku As String
    Dim katakana As String
    Dim kanadaku As String

    hiragana = "がぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽ"
    hiradaku = "か゛き゛く゛け゛こ゛さ゛し゛す゛せ゛そ゛た゛ち゛つ゛て゛と゛は゛ひ゛ふ゛へ゛ほ゛は゜ひ゜ふ゜へ゜ほ゜"
    katakana = "ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポヴ"
    kanadaku = "カ゛キ゛ク゛ケ゛コ゛サ゛シ゛ス゛セ゛ソ゛タ゛チ゛ツ゛テ゛ト゛ハ゛ヒ゛フ゛ヘ゛ホ゛ハ゜ヒ゜フ゜ヘ゜ホ゜ウ゛"

    If inverse = False Then

        Debug.Print "inverse"
        For i = 1 To Len(hiragana)
            str = Replace(str, Mid(hiradaku, 2 * i - 1, 2), Mid(hiragana, i, 1))
        Next
        For i = 1 To Len(katakana)
            str = Replace(str, Mid(kanadaku, 2 * i - 1, 2), Mid(katakana, i, 1))
        Next

    Else

        For i = 1 To Len(hiragana)
            str = Replace(str, Mid(hiragana, i, 1), Mid(hiradaku, 2 * i - 1, 2))
        Next
        For i = 1 To Len(katakana)
            str = Replace(str, Mid(katakana, i, 1), Mid(kanadaku, 2 * i - 1, 2))
        Next

    End If

    DakutenCharConv = str

End Function

コードを入力したあと Excel ワークシートに戻ってセルを選択し、Alt+F8 を押すことでマクロが立ち上がり、エディットダイアログが表示される。あとは、内容を記載していき、すべての入力が完了した後、マクロを削除すれば OK だ。

私は Excel のマクロも Visual Basic もよく知らないのだが、Google で調べつつ約1時間で作成できた。私は大したことない腐れプログラマーだが、大学の優秀な研究者ならば、15~30 分で作成できる内容だろう。教育が足りない私の仕事は参考とせず、是非とも一から自作していただきたい。

さて、「日本の研究者がみんな揃って怨嗟の声を上げて」いるのはなぜか。考えたくはないが、もしかして、ちまちまと1セルずつ打ち込んでいるのではないか。何の工夫もなしに。研究者ならば、この程度の課題は応用力を効かせて簡単にクリアしてほしいし、それが当たり前にできる研究者に科研費を受け取ってほしい。そう考えると、ネ申Excel はある種の足切りとして作用していた面もあるのではないだろうかと思えてくる。応用力の効く者は簡単に申請でき、そうでない者には無意味な負担を強いる。

ここまで偉そうなことを書いてしまったが、当方、科研費の詳細も Excel の仕様も知らないので、見当違いであれば謝罪いたします。

おまけ

「Excel方眼紙=悪」なのか? 公開討論会9月に開催 – ITmedia NEWS

楽しみにしています。

夫が科学研究費を不正使用しています – BIGLOBEなんでも相談室

科学研究費とは科研費のこと?

科研費を用いてのホームページ作成について | 研究機関専門ホームページ制作 – 株式会社シストランス

一般市民を対象にした研究成果広報ならば、ホームページ作成に科研費を使うことも OK みたいです。残念ながら、研究の成果や妥当性がよくわからないページも見受けられますが。「お前がアホだから理解できないのだろう」と言われればその通りであります。