もう21時か、
2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50 [PR]女性の自宅ナマ映像を無料公開[PR]  

Excel総合相談所 72

1 :名無しさん@そうだ選挙にいこう:2008/07/11(金) 17:39:04
Excelに関する質問は、ここで!

▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★1 質問するときは環境や条件はきちんと書いてね。情報後出しはダメ。
★2 要望は具体例や図を使って明確かつ具体的に。
★3 質問前に>>2-10あたりの注意書きやQ&Aを必ず読むこと。
★4 質問テンプレ(雛形)は必須じゃないけど、
   OSやExcelのバージョン、VBAの可否など(下記テンプレ1〜4の情報)は必須情報。

▼━質問テンプレ (出来れば使ってね) ━━━━━━━━━━━━
【1 OSの種類         .】 Windows**
【2 Excelのバージョン   】 Excel**
【3 VBAが使えるか    .】 はい・いいえ
【4 VBAでの回答の可否】 可・否
【5 検索キーワード     】 Googleやヘルプでの検索キーワード

※【4】は、VBAはわからないけどコード書いてくれるならVBAでもいいって場合は「可」
  VBAを使うのは避けたいって場合は「否」にしましょう。丸投げする場合は、必要に応じてブックをアップすること。

※【5】は、あなたがGoogleやヘルプで検索した際に使ったキーワードを書いてください。
  まだ検索してないなら、質問の前にGoogleやヘルプで検索してみてください。
  ttp://www.google.co.jp/

前スレ
Excel総合相談所 71
http://pc11.2ch.net/test/read.cgi/bsoft/1214204248/l50


812 :810:2008/08/20(水) 01:05:38
>> 810氏
出し方の質問ではなく、
「漢字を貼り付け」た場合の結果に対する理屈を質問させてもらいました。
理解しにくい質問で申し訳ありませんでした。

>>人間が入力した変換前の読み仮名を(ry
というところから、最後に入力したのか貼り付けの漢字である場合、
その漢字の手前であるカナが入力されていないので漢字のまま出てきてしまう
ということなのでしょうか?

813 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 01:27:53
>>812
IMEには「再変換」という機能があります。読み仮名を記憶する機能のないメモ帳などのアプリに
漢字を貼り付けたあと再変換すると、漢字変換辞書に登録されている単語から元の読みを
推測して表示してくれるのですが、
読みがデータベースに入っていなかった場合はPHONETICも内部でこの機能を呼び出して
適当な読み方を返すようになっています。
辞書に登録されてなくて再変換できなかった熟語は漢字のままになります。

814 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 02:10:04
【1 OSの種類         .】 Windows Vista
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 微妙(For文がわかるぐらい)
【4 VBAでの回答の可否】 是非お願いします
【5 検索キーワード     】 Excel vba 動的配列

VBAの動的配列のことで質問があります。
僕は説明がへたくそなので、(自分でも日本語でおk、と言いたいくらい説明が下手)
実際にExcelファイルをアップロードします。
その中に質問の詳細が書かれています。

お手数ですが、なにとぞ、お願いいたします。

【アップロード先】
ttp://applis.servehttp.com/index.htm

【対象ファイル】
00022760.rar

【PASS】
1114





815 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 09:38:24
>>810
シートのセル全体に対して
書式→ふりがな→表示/非表示
とやって、ふりがなを表示する状態にして色々いじると大体わかると思う。

PHONETICは、ふりがなを振る関数ではなく、ふりがなを取り出す関数。


おまけ。
Alt+Shift+↑というのがふりがなにカーソルを持って行くショートカットキーなんだけど、
ふりがなのないセルでこれをやるとふりがなが振られる。へー!

816 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 10:45:38
>>814
VBA使うまでもなく関数で充分な気もするが
VBAで配列使って処理するなら、動的配列より連想配列の方が医員で内科医?

817 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 11:07:18
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2002
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 Excel オブジェクト 変換

お客さんからもらったデータなんですが、
一見セル内に値が入ってるように配置されてる各テキストが、
実際は個々のテキストが全てオブジェクト化されてて困ってます。
こいつらをなんとかしてセル内の値に変換したいのですが、
なにかいい方法はありますでしょうか。
よろしくお願いします。

818 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 11:41:18
>>817
オブジェクトがなんなのかは知らないが、
OCR or Copy&Paste
じゃないですかね。

819 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 15:18:38
自宅
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2003

会社
【1 OSの種類         .】 Windows2000
【2 Excelのバージョン   】 Excel2000

自宅で作ったExcelシートをUSBメモリに入れて会社に持っていったら
そのシートは正常に開きますか?バージョンが違うとダメなんでしょうか?
なんか間抜けな質問ですみません・・


820 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 15:34:53
>819
2000と2003ならわりとそのままOKだった気がするが
2003で保存する時に保存形式を選べばよか。

821 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 16:15:31
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2002
【3 VBAが使えるか    .】 いいえ(記録してみたら訳が分からなくなってました)
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 Excel IF関数 空白セルを返す

B2に文字が入力されたら、A2に番号を振り、入力されていなければ未入力セルにしたい。
検索した結果、IFの偽の場合を""にすれば0が返らず空白セルにできるとあったため以下のように書きました。
=IF(CELL("type",B2)<>"b",A1+1,"")

しかしエクセルだけで作業が終わる場合はこれでよいのですが、タブ区切りのテキストファイル
に出力すると計算式の入っている所全部にタブが入った状態になってしまいます。
検索エンジンのデータファイル(タブ区切りテキストファイル)編集に使っているので、この状態だと何も
入っていないデータテーブルが出来てしまうので何とかしたいのですが、やはりマクロで書くほうがいいですかね・・・。

822 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 16:17:07
質問させていただきます。よろしくお願い致します。

【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】Excel 印刷範囲 表示のみ

たとえなんですが、セルのA1〜A10を印刷範囲に指定しようとして
A3行〜A7行までは非表示だった場合、非表示の行を印刷範囲に含めずに
印刷するにはどうしたらよいでしょうか?

Selection.SpecialCells(xlCellTypeVisible).Select

↑をプリントエリアに設定しても参照できないと怒られてしましました。
これをなんとかして印刷範囲に設定したいのですが、、
どなたかよろしくお願い致します。


823 :822:2008/08/20(水) 16:23:57
申し訳ございません、言葉が足りませんでした。

Range("A1:A10").Select
Selection.SpecialCells(xlCellTypeVisible).Select
ActiveSheet.PageSetup.PrintArea = "$A$1:$A$10"

だと思うような結果でした。しかし、

Range("A1:A10").Select
Selection.SpecialCells(xlCellTypeVisible).Select
ActiveSheet.PageSetup.PrintArea = ActiveCell.CurrentRegion.Address

だとうまくいきません。

後出しですがフィルタオプションの使用後に毎回設定し直したいのです。

824 :822:2008/08/20(水) 16:59:11
たびたびすいません。自己解決しました。

参考サイト
http://www.geocities.jp/ionchan2006/excelvba046.html

実際のソースコードです。

Me.Range(Cells(1, 1), Cells(WorksheetFunction.CountA(Me.Range("A1:A10")), 1)).Select
Selection.SpecialCells(xlCellTypeVisible).Select
ActiveSheet.PageSetup.PrintArea = Selection.Address

これで1ページめに指定した範囲が印刷範囲として指定出来ました。

ありがとうございました。

825 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 17:57:36
>>817
MsgBox ActiveSheet.Shapes(1).TextFrame.Characters.Text

826 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 18:45:01
>>815

いえVBAでないとダメなんです。

仕事でこれと似たようなことをするんですが、勉強の為にVBAでやるように上から言われてるので…
連想配列ですか…
とりあえずトライしてみます。

827 :821:2008/08/20(水) 20:30:51
>>821です。やはりマクロにすることにしました。
そこでVBAでの命令語について質問です。
[B列の任意の1セル]はどう書けばよいでしょうか。
Range?Cells?ActiveCell?何だかどれも違うような・・・

828 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 20:36:48
>>826
連想配列のサンプル作ってやろうか?

>>827
> B2に文字が入力されたら、A2に番号を振り、入力されていなければ未入力セル
なら、Cellsでループ回せばいいんじゃね?

829 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 21:29:44
>>828

お願いします。

830 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 21:51:25
【1 OSの種類         .】 Windows97
【2 Excelのバージョン   】 Excel2003
【3 VBAが使えるか    .】 いいえ
【4 VBAでの回答の可否】 否
【5 検索キーワード     】 VLOOUP IF

↓シート1
A      B    C     D     E     F     
3証券番号  名前  評価   銀行名   支店名   担当者



3000

↓シート2
A    ・・・ G      H     I
3証券番号   銀行名   支店名   担当者



3000

2つのシートがあり、シート1には証券番号しかなく、並びはバラバラです。
シート2から抽出してシート1の「銀行名」「支店名」「担当者」に入れていきます。
VLOOKで作成しましたが、1つのファイルにシートが6つ、1シートにデータが3000ずつくらいあるので
ただでさえ開くと重いのに、更にVLOOKで貼り付けると表示が重くなるのでしょうか?
=VLOOKUP(A3, sheet2!$A$3:$I$3180, 9, FALSE)
これでやりましたが、VLOOKの代わりに INDEX MATCHを使ったほうが表示重くないのですか?
下のような数式
=IF(ISERROR(0/LEN(INDEX(Sheet2!I:I,MATCH(A3,Sheet2!A:A,0)))),"",INDEX(Sheet2!I:I,MATCH(A3,Sheet2!A:A,0)))

831 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 21:56:36
>>829
00022833.rar
同じところに同じパスで上げた

書いたコードは標準モジュールのModule3とクラスモジュールのListItemClassにあるから

解りやすいように変数名とかに日本語使ってるのでこれをベースにするなら適当に変えてくれ
あと速攻で作ったので例外処理とか端折ってるから実用するならその辺も付け加えてね

832 :名無しさん@そうだ選挙にいこう:2008/08/20(水) 21:59:56
>>830
ISERROR(0/LEN(INDEX(Sheet2!I:I,MATCH(A3,Sheet2!A:A,0))))

この式の意味わかって書いてる?
こんな配列数式は余計に重くなるだけ。

833 :816,828,831:2008/08/20(水) 22:20:04
>>829
書き忘れたが、データ量が多くなるならCells().Valueで逐一取得や入力をせず
配列介した方が遙かに早いから

因みに入力の場合の配列は二次元の動的配列
取得の場合は自動生成に任せれば良い

834 :827:2008/08/20(水) 23:39:43
>>828
CellsではなくColumnsでした。すみません。

A B C
1 1
2
3
という表で、B2に何か文字が入ったら、A2にA1+1を入れたい。
>>821で最初に思いついてやったのがマクロではなくて、
A2に =IF(CELL("type",B2)<>"b",A1+1,"")  の入力。
ただこれだとCSVにしたときに式をコピーした範囲にタブが入ってしまうので
マクロでやった方がいいかなと。
で、あちこち自分なりに調べて書いては見たのですが・・・
セルを「書いたら」なのでGeneralでなくWorksheetで
Private Sub Worksheet_Change(ByVal Target As Range)
 If Columns("B") <> "" Then
 Columns("A") = Columns("A" - 1) - 1 'ここの表現・書き方が分からない。
 End If
End Sub

といちおう書いてみましたが、”1個前のA列の中身”の表し方が分からない
(動かないってことはそういうことですよね・・・)

835 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 00:07:03
【1 OSの種類         .】 WindowsXP
【2 Excelのバージョン   】 Excel2007
【3 VBAが使えるか    .】 はい(参考文献を見ながらなんとか)
【4 VBAでの回答の可否】 可

A1に4と入力してを実行するとB64をC1に、C64をD1に、D64をB3にコピー
A1に7と入力してを実行するとB67をC1に、C67をD1に、D67をB3にコピー
A1に11と入力してを実行するとB71をC1に、C71をD1に、D71をB3にコピー
のようにするマクロを作りたいと思っています。
しかし、A1の数値を読み取って+60したセルを選択する方法がわかりません。

いろいろと調べてみたのですがわかりませんでした。
上記のようなことは可能でしょうか?
可能ならばどのようにすればよいのでしょうか?
よろしくお願いします。

836 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 00:09:16
イベントの処理でできるし、それが載ってない本なんてありえない
まず1冊通して読め

837 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 00:22:30
Excel2003です。
通常、入力のないセルは0だと思うのですが、既定値を別の値とする事はできますか?
例えば、何も入ってない空白セルを8として認識させ、
2と表示されているセルは実際は10であるようにして、
 1 2 1   1 2 …
をオートSUMで合計した場合に55になるようにしたいです。

838 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 00:24:48
>>837
空白→8
2→10
1→??

条件をすべて書いてくれたら考えてみる

839 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 00:47:35
LOOKUP関数の存在意義って何なのでしょうか?
LOOKUP関数の考えた方がベースにあって、VLOOKUPとHLOOKUPが成り立っているのはわかるのですが、
VLOOKUPさえあればLOOKUP関数って要らないような気がします。

LOOKUP関数にしかできないことってありますか?

840 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 01:03:34
>>839
古いバージョンのExcelにはVLOOKUPがなくてLOOKUPを使うしかなかった。つまり昔の名残。

841 :834:2008/08/21(木) 03:23:40
自己解決しました。

Private Sub Worksheet_Change(ByVal Target As Range)
 Application.EnableEvents = False
 If Target.Column <> 2 Then Exit Sub
 If Target.Value <> "" Then
 Target.Offset(0, -1).Value = Int(Target.Offset(-1, -1).Value + 1)
 end if
end sub
で一応動きました。お騒がせしました。
動いたけど>>828さんの「ループさせる」もぐるぐる考え中・・・

842 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 08:09:50
【1 OSの種類         .】 Windows98
【2 Excelのバージョン   】 Excel2000
【3 VBAが使えるか    .】 はい
【4 VBAでの回答の可否】 可
【5 検索キーワード     】 入力規則

Sheet1のあるセルに入力規則をかけようと、
入力可能な値のリストを指定します。

この指定を、Sheet2のリストにしたいのですが、
可能でしょうか?

843 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 09:25:51
>>842
ttp://www.relief.jp/itnote/archives/000210.php
普通に指定するだけじゃ無理っぽい

844 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 10:00:04
>>839
いくらでもある
=LOOKUP(5,A1:A6,C4:H4)
とか
=LOOKUP(10^5,A:A)
とか君が知らないだけ

845 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 10:50:33
>>844
今手元にある情報を元に判断した上での疑問を
質問しただけなのに、なんでそういう言い方するの。

>>839だって、違和感があるから
 『何か理由があるんだろうな』
ということで質問してるわけでしょ?

『VLOOKUPさえあればLOOKUP関数は要らないわけで、
 未だに使ってる奴は老害か情報弱者のどちらか
 どっちにしろ馬鹿。マジ死ねばいいと思う。』

とか言ってるなら”君が知らないだけ”とか
言っちゃってもいいと思うけどその口のきき方は
ひどいというかおかしいよ。

846 :842:2008/08/21(木) 11:09:07
>>843
質問前にWebを見回っていたのですが、
なかなかできませんでした。
でも、このレスを見てできました。
ありがとうございました。

847 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 12:29:26
列に直接+−×÷を挿入して計算する方法は無いですか?
例えばA列に数字、B列に×、C列に数字、D列に=、E列に結果という感じに。

848 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 12:39:51
>>847
ワークシート関数じゃ無理かなあ
VBAで自作の関数作ればいけるかもね
字句解析のサンプル探して付くってもいいし、演算子を置き換えてevaluateでもしいし

849 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 12:44:35
>>847
=IF(B1="+",A1+C1,0)+IF(B1="−",A1-C1,0)+IF(B1="÷",A1/C1,0)+IF(B1="×",A1*C1,0)
ってぐらいしか思い浮かばないな


850 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 12:49:47
ああ、でも単純に2値の四則演算だったら、4パターンしか結果が出ないから、全部の計算をやっておいて答えを表引きしてもいいかもね
=CHOOSE(SEARCH(B1,"+-×÷"),A1+C1,A1-C1,A1*C1,A1/C1)
こんなとかで

851 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 12:53:01
お、かぶったかな。すまん。

852 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 13:06:02
グラフを作成したら縦軸の項目が上下逆になってたので
軸の書式設定で軸を反転させて、それは直ったのですが
今度は下にあった横軸の項目名が、上軸に来てしまいました。
これを直すにはどうすればいいでしょうか?

エクセル2007です。
よろしくお願いします。

853 :847:2008/08/21(木) 13:12:21
なるほど。
47都道府県の各総生産(A)÷(B)人口(C)=(D)平均生産(E)の表を1〜47まで出したかったのですがこれでは無理そうですね。

854 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 13:15:20
>>853
B列はあくまで表記だけにしてE列に式入れたほうが早いと思うぞ


855 :835:2008/08/21(木) 14:11:17
すみません。
>>835
を教えていただけないでしょうか?

よろしくお願いします。

856 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 14:11:26
>>845

>LOOKUP関数にしかできないことってありますか?
に対する答えとしてまちがってはいない。
2ちゃんなんだしお前が一番おかしい。

857 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 14:16:16
手遅れだな

858 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 14:25:05
>>855
シートの内容を変更したタイミングで処理を実行させるには、worksheet_changeイベントと
いう仕組みを使えばおk
どのセルの内容が変更されたかを判定するには、上記イベントの引数targetというのを使えばOK
任意のセルから指定しただけ離れた位置にあるセルを取得するにはoffsetを使えばおk
あとは文献とやらで調べて好きにしておくれ

859 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 14:26:58
>>852ですが自己解決しました。
ありがとうございました。

860 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 17:39:58
>>858
ありがとうございます。
OFFSETを使って理想道理の動作をさせることが出来ました。

また、別の問題が発生してしまいました。
A1に10,11,12と入力してあります。
これをシリアル値に変換したいのですが上手くいきません。
=TIME("A1")などを試しましたが引数が少ないというエラーになってしまいます。
よろしくお願いします。

861 :名無しさん@そうだ選挙にいこう:2008/08/21(木) 17:44:17
>>860
=SUBSTITUTE(A1,",",":")*1
もしくはmid()などで取り出しtime()に入れる

289 KB [ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]

■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
Windows Media 9 Series その19 [DTV]
Windows98を使い続けるよ Part11 [Windows]
[プログラム板] C#, C♯, C#相談室 Part47 [プログラム]
WinXP SP3で不具合が発生したソフト・ハード 2nd [Windows]
Excel VBA質問スレ Part7 [プログラム]

新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :


read.cgi ver 05.0.7.3 2008/07/26
FOX ★ DSO(Dynamic Shared Object)