コンピュータの知性・・・
はてなに次のような質問がありました。
知性の向上について質問です。
↓のブログに書いたのですが、
http://d.hatena.ne.jp/ey272/
知性の向上とは、「計算処理速度が速くなること」だと思っているのですが、
みなさんはどう思われますか?
抽象化、演繹、帰納の段階が増えると知性が向上するとも思えないのですが・・・(逆に観測している現象から逸脱しすぎてしまう!?=現実離れした推定をする?)
コンピュータの知性は、処理速度を上げるだけで、上がるのでしょうか?
多分、難しいと思います。
なぜなら、処理速度を上げても速くなるだけで、創造アルゴリズムや過去の状況判断アルゴリズムを生み出すことはできないからです。
人間がそれらのアルゴリズムをコンピュータに実装し、コンピュータに知性を与えられるのは、相当先の未来になる感じですね。
参考(知性の定義)
トリニティ(三位一体)という知性を持ったコンピュータ
知性を持ったコンピュータが出てくる冒険小説を最近読んだばっかりでした。実はそういうのが好きだったりする。ビッグバンや神の話が出てくる箇所は好き嫌いが分かれるところですね。
公民館のお祭りの古本コーナーで、上下合わせて\40! 結構面白かった。
- 作者: G.アイルズ,雨沢泰
- 出版社/メーカー: 講談社
- 発売日: 2006/07/12
- メディア: 文庫
- この商品を含むブログ (8件) を見る
- 作者: G.アイルズ,雨沢泰
- 出版社/メーカー: 講談社
- 発売日: 2006/07/12
- メディア: 文庫
- この商品を含むブログ (8件) を見る
難しい人名の簡単な入力方法があった!
Excelのショートカットキーのキーボードレイアウト上での割付
以前、「ExcelやWordのショートカットキーの割付を書きます」と言ってて、書いていませんでした。
Excelのショートカットレイアウト
EXCEL生産性向上委員会 ショートカット一覧にデフォルトのショートカットキー割付がスクリーンキーボードで見えやすくまとまっています。
ショートカットを覚えるというより、空きの場所を探したり、マニアックなショートカットを探すのにすごく役立ちそうです。
マクロの取り消しはできる?
マクロの難点は、簡単にCtrl+Zで取り消しでききないことですね。
でも、ある程度簡単なことでしたら、取り消しできます。
別マクロで取り消し動作を書いてあげればいいのです。
回答が終了になっていましたが、ここで要望のことができるプログラムを掲載しておきます(ソースの一部は質問部分から流用)。
●ポイント
- 前の値をUndoで持ってくる
- Application.EnableEventsで変更したときにChangeイベントが発生しないようにする(Undoのとき、元に戻すマクロを動かしたとき)
- セーブしておく場所は標準モジュール側に記載しておく
●Sheet1側
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim intColor As Integer Dim celColor As Integer Dim NowVal As Variant If Target.Count > 1 Then Exit Sub If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub intColor = 0 Select Case Target.Value Case Is = "あ" intColor = 1 celColor = 2 Case Is = "い" intColor = 1 celColor = 2 Case Is = "う" intColor = 1 celColor = 3 Case Is = "え" intColor = 1 celColor = 4 Case Is = "お" intColor = 1 celColor = 5 End Select If intColor <> 0 Then NowVal = Target.Value Application.EnableEvents = False Application.Undo OrgVal = Target.Value Target.Value = NowVal Application.EnableEvents = True ActiveCell.Offset(1, 0).Activate Set OrgTarget = Target OrgintColor = Target.Font.ColorIndex OrgcelColor = Target.Interior.ColorIndex Target.Font.ColorIndex = intColor Target.Interior.ColorIndex = celColor End If End Sub
●標準モジュール側
Option Explicit Public OrgintColor As Integer Public OrgcelColor As Integer Public OrgVal As Variant Public OrgTarget As Range Sub UndoColor() OrgTarget.Font.ColorIndex = OrgintColor OrgTarget.Interior.ColorIndex = OrgcelColor Application.EnableEvents = False OrgTarget.Value = OrgVal Application.EnableEvents = True End Sub
OLEオブジェクトはどうやれば操作できるんでしょう?
OLEオブジェクト(Wordでの数式)の編集は中々できないですね。
タッチの差で回答が終了になってしまいましたが、ここで要望のことができるプログラムを掲載しておきます。
Option Explicit Sub GetEquation() ' (1)EQNEDT32.EXEの場所が違う場合は適宜調整 Const sMathEdit As String = "C:\Program Files\Common Files\Microsoft Shared\EQUATION\EQNEDT32.EXE" Dim oMath As InlineShape Dim vPID As Variant vPID = Shell(sMathEdit, vbNormalFocus) If vPID = 0 Then Exit Sub Selection.WholeStory For Each oMath In Selection.InlineShapes oMath.OLEFormat.DoVerb VerbIndex:=1 Waitfew (2) SendKeys ("%EL"), True Waitfew (2) SendKeys ("%EC"), True Waitfew (2) SendKeys ("%FX"), True Waitfew (2) AppActivate vPID Waitfew (2) SendKeys ("%EP"), True SendKeys ("{ENTER 2}"), True Waitfew (2) Next End Sub '少し待つ Sub Waitfew(iWait As Integer) ' Application.wait (Now + TimeValue(sWait)) wordにwaitメソッドなし Dim Start Start = Timer Do While Timer < Start + iWait DoEvents Loop End Sub
(1)のところは、EQNEDT32.EXEの場所が違う場合、それにあった物に変更ください。
デフォルトでインストールしてある場合は、変更不要です。
「フィルタオプションの設定」で色々フィルタできます
Excelでのフィルタは、複雑な条件でデータ抽出できますが、比較的知られていないようですね。
各種数式やVBAを駆使しなくても、「条件に合うデータの抽出」は次のような感じで簡単にできます。
●やり方
- ヘッダを適当なところへコピー(例では表を下げて1行目へコピー)
- 条件を入れる(例では時間の列へ1行ずつ">=45"を12ヶ月分)
- データ→フィルタ→フィルタオプションの設定でリスト部分とフィルタ部分を指定する
- めでたく希望のフィルタ結果が出るのでコピーしてSheet2へ貼り付ける
↓
条件は、1行の中はandでつながれ、別な行はorです(Accessのような感じと思えばOKです)。
ですから複雑な条件があっても、柔軟で単純に変更できます。
例えば、4月も5月も45時間以上残業している人を出したいとか(この場合、同じ行に">=45"を2つ書く)。
100時間で行うのであれば、">=45"を">=100"に一括で置き換えるか、何度も同じことをするのであれば、条件を別に作っておいて切り替えるという手もあります。
ちなみに、全部を再度表示させるのは、「データ→フィルタ→すべての表示」で戻ります。再度フィルタしたいときは、「フィルタオプションの設定」を選べば、同じ条件で行われます。
分からない場合は、次も参考にしてみてください。
Excel(エクセル)基本講座:フィルタオプションの設定(データ抽出)
Excelのヘルプ:「フィルタ」で検索し「フィルタについて」
Wordでのcopy&pasteは書式なしが便利
Wordへのテキスト貼り付けは、簡単に1行マクロ&ショートカットでできます。
【Microsoft Word で、「貼り付け」→「形式を選択して貼り付け」→「テキスト」をものすごく頻繁に使います。
ただ、そのたびに上の「貼り付け」→「形式を選択して貼り付け」→「テキスト」を繰り返すので大変面倒です。
これを何かショートカットにするか、アイコンをすぐ使える場所に出しておきたいのですが、どうやったら
いいのでしょうか。使っているのはMicrosoft Word 2007です。】の質問にあったように、私もWordではテキスト形式での貼り付けを結構多用します。
毎回メニューから出すのは鬼のように面倒なので、マクロをショートカットにして軽快に使いましょう。
毎回メニューから同じのを選ぶというのは、苦痛!(機械に使われているように感じてしまうのは私だけ?)
Sub 値貼り付け() ' ' 値貼り付け Macro ' 記録日 2005/04/19 記録者 hoge hoge ' Selection.PasteSpecial Link:=False, DataType:=wdPasteText, Placement:= _ wdInLine, DisplayAsIcon:=False End Sub
たった、これだけです。
手早くやるのは、次の手順。この手順を1回行うだけで、該当PCのWordは全文書でこの機能が使えます。
- Word中の適当な文字列をコピーしておく
- 「ツール→マクロ→新しいマクロの記録」でマクロを記録
- マクロ名=後で見てわかり易い適当な名前(上の例なら、値貼り付け)
メニューかキーボードにショートカットを割付(キーボードがお勧め。Ctrl+Shift+Aなど)
マクロの保存先=「すべての文書(normal.dot)=デフォルトのまま」 - 「形式を選択して貼り付け」でテキストを選ぶ
- マクロの記録を終了して、wordを閉じる
これで、ストレスなくクリップボードに入ったIE(ホームページ)やWordの書式付きテキスト、他アプリのデータが存分に貼り付けられる! 楽ちん、楽チン
なお、Word以外の文字列をクリップボードに入れて、マクロの記録をしたときは、なぜかWordが変なマクロを吐き出しますので、ご注意を。Wordのマクロ記録のバグと思われます。
念のため、Alt+F11を押して中身を見てみるといいと思います(標準モジュール>NewMacros)。
' ●Word以外の文字列をクリップボードに入れるとマクロ記録がバグ ' このマクロが吐き出される→これは書式付きになる ' Selection.PasteAndFormat (wdPasteDefault) ' でもパラメータを変えて書式なしにすれば、最初のマクロと同じ効果 Selection.PasteAndFormat (wdFormatPlainText)