トップ «前の日記(2007-01-13) 最新 次の日記(2007-01-15)» 編集

tito Memo

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|
2010|02|04|05|06|08|
2011|01|02|03|08|10|12|
2012|01|
2013|03|04|

個人的なメモを記していくためのページです。


2007-01-14

* クリップボードのcsvテキストをEXCELに貼り付けるとき、CSVのフィールド毎にセルに貼り付ける方法

(2007-01-17追加)コメントで教えてもらったとおり貼り付けた後にデータ(D)−区切り位置(E)を使うのがいいです。excelのヘルプか"excel 区切り位置"で検索してみてください。

クリップボードのテキストがCSV形式であるときEXCELに貼り付けてもただ単に一つのセルに貼り付けられてしまう。ファイルからCSV読み込みするときのようにフィールド毎に区切ってセルに割り当ててはくれない。いちいち適当なファイルに保存してからとか面倒だなと思っていたら次のような記事を見つけた。

Excelさーが 恐るべきExcelの機能を昨日発見した!(今日発見したけど) (J)
(via ときどきの雑記帖 リターン エラーになったらこっちから)

ほうほう、こんな機能があるんだというわけでスクリプト。csvテキストからフィールドを切り分けるコードはPerlメモ/CSVデータ - Walrus, Digit.から盗んだ。

 #!/usr/bin/perl
 
 use strict;
 use Win32::Clipboard;
 
 my $clipBoard = Win32::Clipboard();
 
 my @lines = split( /\n/,$clipBoard->Get());
 my $out;
 
 $out = "<table>";
 
 
 # csv handle are stolen from http://digit.que.ne.jp/work/index.cgi?Perl%E3%83%A1%E3%83%A2%2FCSV%E3%83%87%E3%83%BC%E3%82%BF
 
 while (@lines) {
   my $line = shift(@lines);
   $line .= shift(@lines) while ($line =~ tr/"// % 2 and (@lines));
   $line =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/;
   my @values = map {/^"(.*)"$/s ? scalar($_ = $1, s/""/"/g, $_) : $_} 
                ($line =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g);
 
   $out .= "<tr>";                
   foreach( @values ){
       $out .= "<td>$_</td>";
   }
   $out .= "</tr>";
 }
 
 $out .= "</table>";
 $clipBoard->Set( $out );

例によってデスクトップなどにショートカットを置けば便利につかえる。なおcsvのフィールド中の改行に関しては考慮していない。excelの動きが私の理解を超えている。

1,2,3
4,5
apple,banana,"che
rry",durian

それぞれクリップボードにコピーして処理するとこんな感じ(a)(b)


(b)は本当は(c)のような形がいいかもしれない。<td>の中で<br>すればと思ったけど簡単かとおもったけどうまくいかなかったので深追いは止めておく。

本日のツッコミ(全3件) [ツッコミを入れる]
_ TJ (2007-01-16 00:22)

普通にペーストしたあとで、データ(D)−区切り位置(E) でデリミタをカンマにしてセルに分割、って手順ではどうですか?

_ tito (2007-01-16 07:02)

おぉ知りませんでした(恥)。使えます。今度から使わせていただきます。ただフィールドに改行コードを含む場合は微妙ですね。<br>ペーストした段階で別の行に分かれてしまっているので、csvファイルとしてオープンしたときと違う結果になります。<br>自分はそんなデータは使わないのでいいです。<br>ヘルプはこれでした。<br>mk:@MSITStore:C:\Program%20Files\Microsoft%20Office\Office\1041\xlmain9.chm::/html/xlhowSeparateTextValuesAcrossCells.htm

_ alinkinas (2019-08-15 10:48)

Я думаю, что Вы не правы. Я уверен. Могу отстоять свою позицию. Пишите мне в PM, пообщаемся.

[]

このページ内のリンクがクリックされたことを知るのにjavascriptを使用しています。javascriptを無効にするとあなたがどのリンクをクリックしたか通知されなくなります。javascriptを無効にしてもこのページの閲覧に問題はありません。javascriptを無効にするページもご覧ください。
クラシック・ドーム クラシック・ドームソフト・ドーム ソフト・ドームソフト・リム ソフト・リム
キャップ10個入り。3種類の詰め合わせ(3種x2=6個入り)の、トラックポイント・キャップ・コレクションはIBMダイレクトで945円(税込み)