トップページtech
1002コメント374KB

Excel VBA 質問スレ Part45 [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2017/01/03(火) 02:51:16.56ID:9Y8iTik6
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part44
http://echo.2ch.net/test/read.cgi/tech/1479421482/


※関連スレ
VBAなんでも質問スレ Part2
http://echo.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://echo.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 125
http://echo.2ch.net/test/read.cgi/bsoft/1481369538/
0083デフォルトの名無しさん2017/01/10(火) 10:38:44.28ID:yHxqwlUe
>>82 の続き
'Shape.TopLeftCellの誤差補正後の左上セルを取得する関数
Public Function GetTopLeftCell(SP As Shape, Optional num_digits As Integer = 2) As Range
Set GetTopLeftCell = SP.TopLeftCell
If GetTopLeftCell.Offset(1).Top <= Round(SP.Top, num_digits) Then
Set GetTopLeftCell = GetTopLeftCell.Offset(1)
End If
If GetTopLeftCell.Offset(, 1).Left <= Round(SP.Left, num_digits) Then
Set GetTopLeftCell = GetTopLeftCell.Offset(, 1)
End If
End Function

'Shape.BottomRightCellの誤差補正後の右下セルを取得する関数
Public Function GetBottomRightCell(SP As Shape, Optional num_digits As Integer = 2) As Range
Set GetBottomRightCell = SP.BottomRightCell
If GetBottomRightCell.Top >= Round(SP.Top + SP.Height, num_digits) Then
Set GetBottomRightCell = GetBottomRightCell.Offset(-1)
End If
If GetBottomRightCell.Left >= Round(SP.Left + SP.Width, num_digits) Then
Set GetBottomRightCell = GetBottomRightCell.Offset(, -1)
End If
End Function

以上、ご報告まで。
0084デフォルトの名無しさん2017/01/10(火) 12:02:57.55ID:yHxqwlUe
連投すいません。次の質問です。

以下のようなマクロがあります。
1.非モーダルのユーザーフォーム(fm)が常駐
2.ユーザーが任意で複数の画像を選択
3.fm上のボタンをユーザーがクリックして下記のような処理を実行
For each obj in Selection
obj.cut
ActiveSheet.PasteSpecial Format:="図 (JPEG)"
Next
すると、最後にPasteしたShapeを選択した状態でマクロが終了します。

ESCを押して選択を解除するような操作をVBAで再現するにはどうしたら良いのでしょうか。

・マクロの記録では、ESCでShapeの解除は記録されませんでした。
・Application.SendKeys "{ESC}"を試してみたのですが、反応がありませんでした。
・ユーザーフォームにフォーカスが取られているのかと思いActiveWorkbook.ActivateやActiveWindow.Activateを入れたのですが無反応でした。

強引な解決策を考えましたが、もっとスマートな方法が無いかと探しています。
・終了後に適当なRangeをSelectしてからScrollRow/ScrollColumnして元の位置に戻す。
・シートのSelectionイベントで直前までに選択されたRangeを保持する。

ご教示のほどよろしくお願い致します。
0085デフォルトの名無しさん2017/01/10(火) 15:45:40.53ID:8VGVrhFD
>>84
君の思う スマートな方法が どんなものだかは分らんが

どこかのセルを選択するのが一番簡単だと思う
適当なセルだとスクロールしてしまうのがイヤなら

・選択されてるShapeの右上のセルを選択
・画面上の左上のセルを選択
とかでいいんじゃね?
0086852017/01/10(火) 15:47:43.23ID:8VGVrhFD
間違った
× ・選択されてるShapeの右上のセルを選択
○ ・選択されてるShapeの左上のセルを選択
0087デフォルトの名無しさん2017/01/10(火) 17:40:05.82ID:yHxqwlUe
>>85
とりあえずは、表示画面の左上セルをSelectするようにしたいと思います。
>スマートな方法
いわゆるobj.Unselect()メソッドとか、obj.Select(false)のような選択解除専用の機能は無いか。という事です。
Excel VBAって思わぬオブジェクトに実装されていたりするので・・・
0088デフォルトの名無しさん2017/01/11(水) 08:57:05.13ID:J0hUcFsW
マクロでなく操作で非選択って出来る?
結局は別のものを選択してるよね
0089デフォルトの名無しさん2017/01/11(水) 09:00:21.43ID:v+irSj+y
>>87
プロパティ的なもんはオブジェクトブラウザかなんかで調べれば出てくるんじゃないの
0090デフォルトの名無しさん2017/01/11(水) 12:03:53.06ID:tc1gJPs0
自動で名前を付けて保存したくて、いろいろ調べて形にはなったのですが

A1に日付が2017/01/11と入ってる場合
そのセルを引用したらスラッシュも入ってしまい保存の時にいちいち消すのに困っています。
保存の時にだけスラッシュを消す方法有りませんか?
0091デフォルトの名無しさん2017/01/11(水) 12:12:47.07ID:p4WB0UzK
>>90
format
0092デフォルトの名無しさん2017/01/11(水) 12:31:15.82ID:tc1gJPs0
InitialFilename:=Format(Range("A1"), "yyyymmdd")

このような形でいいのでしょうか?
0093デフォルトの名無しさん2017/01/11(水) 12:34:16.38ID:I7PY9KYr
うちの会社ではほぼ全PCをシンクライアントにしてからというものの
ExcelVBAのマクロを保存してた「PERSONAL.XLSB」が使えなくなりました。
シンクライアントでは「PERSONAL.XLSB」に相当する機能を使用するにはどうしますか?

あとこれが本題なのですが
OutlookとWordも、それらのVBAをデフォルト的個人ファイルに保存して高頻度で使用していました。
特にOutlookのVBAでは便利なマクロを作っていました。
シンクライアントでもそれらの機能を使用するにはどうしますか?
0094デフォルトの名無しさん2017/01/11(水) 12:35:59.27ID:p4WB0UzK
指定の位置に日付が入ってるのであればそれでよいはず
0095デフォルトの名無しさん2017/01/11(水) 12:38:17.27ID:tc1gJPs0
>>94
ご丁寧にありがとうございます!
0096デフォルトの名無しさん2017/01/11(水) 12:48:03.28ID:p4WB0UzK
>>93
単純に移行すれば使えると思う
以前使ってたpersonal.xlsbを所定の位置に配置すればできるはず
0097デフォルトの名無しさん2017/01/11(水) 12:50:26.58ID:I7PY9KYr
>>96
シンクライアントでは普通の方法ではCドライブが見えないんです。
別の方法で見つけてそこに入れても、次の日にPCを起動したときにそのファイルは消えてしまっているから
わざわざファイルを移動する方法では無駄になってしまうんです。毎日する必要になるから面倒で。
0098デフォルトの名無しさん2017/01/11(水) 12:53:38.45ID:xxQxfc5N
>>97
会社のシステム担当者に聞けばいいよ
0099デフォルトの名無しさん2017/01/11(水) 13:08:46.29ID:uU4tfKci
シンクライアントは勝手なことをできないように導入する目的もあるので
自分なりのカスタマイズはあきらめるしかない場合がほとんど
0100デフォルトの名無しさん2017/01/11(水) 13:08:59.59ID:I7PY9KYr
>>98
どこにその部署があるかわからないし
勝手にツール作らないでくださいといわれてそれを禁止されるリスクもあるから
自分の力で解決したいのですが。
0101デフォルトの名無しさん2017/01/11(水) 13:15:26.49ID:I7PY9KYr
Windowsのスタートアップもシンクライアントになって以来使えません(毎回PC起動時にはここは空になります)。
どうすればシンクライアントでもスタートアップ機能を使えるでしょうか?
0102デフォルトの名無しさん2017/01/11(水) 13:37:35.00ID:f6yusNGM
>>101
管理者側で許可設定してもらわない限り、シンクラでカスタマイズは無理
そして許可はまず下りない
あきらめろ
0103デフォルトの名無しさん2017/01/11(水) 13:38:29.71ID:uU4tfKci
完全にVBA無関係じゃん
スレチ
0104デフォルトの名無しさん2017/01/11(水) 13:38:35.27ID:QIrTsKqr
>>101
板違い Windows板かパソコン一般板かPC初心者板へ
0105デフォルトの名無しさん2017/01/11(水) 13:45:44.75ID:1bci6XNy
>>92
聞く前にやりなよそのくらいって思うんだが
1から10まで聞かないとなにもできないの?
0106デフォルトの名無しさん2017/01/11(水) 15:28:17.61ID:qQgm92T6
ここはthinクライアントでCドライブに何か入れたいみたいな馬鹿が来るようなところだから
0107デフォルトの名無しさん2017/01/11(水) 18:57:51.34ID:dcC69ZSQ
エクセルのメニュー、アイコン、リボン、などを初期設定状態に戻す方法はありませんか。

すみません初心者的
0108デフォルトの名無しさん2017/01/11(水) 19:28:32.74ID:uU4tfKci
>>107
リセットボタンあるよ
http://www.helpforest.com/excel/1_book/img/ex010044_1.png
0109デフォルトの名無しさん2017/01/11(水) 20:14:53.64ID:anvEc3zp
レジストリの該当部を削除すれば(それかリネームすれば)元に戻るよ。
と思ったらリセットボタンあるのか。そちらの方がいいですね。
0110デフォルトの名無しさん2017/01/11(水) 20:23:03.75ID:1FwZUW9V
VBAのスレなんだからこんなの教えんなよ…
0111デフォルトの名無しさん2017/01/11(水) 22:54:27.23ID:QIrTsKqr
スレチ質問もスレチ回答も荒らし
0112デフォルトの名無しさん2017/01/11(水) 23:23:15.83ID:JMe0AUgT
>>90
まだこういう勘違いしている人がいるんだな・・
A1には2017/01/11と入ってるわけじゃない
42746という数字が入ってるだけ
0113デフォルトの名無しさん2017/01/12(木) 05:41:59.32ID:nMoQZoqt
>>109
なんだこのアホな回答
0114デフォルトの名無しさん2017/01/12(木) 07:13:34.10ID:0A4eRqXF
>>112
アスペ乙
0115デフォルトの名無しさん2017/01/12(木) 08:41:15.75ID:Lhyp+MOo
>>112
[A1].Valueが 2017/01/11 なのです。
0116デフォルトの名無しさん2017/01/12(木) 09:48:23.99ID:Rj8+4pg/
[A1].Textじゃなくて?
0117デフォルトの名無しさん2017/01/12(木) 11:56:09.07ID:Cc5O9IhJ
お前の会社のことはお前の会社でなんとかしろよ
0118デフォルトの名無しさん2017/01/12(木) 12:29:26.83ID:Lhyp+MOo
>>116
表示形式が yyyy/m/d だと Text は 2017/1/11
0119デフォルトの名無しさん2017/01/12(木) 12:45:45.01ID:6ppTquF5
[A1].Value2と[A1].Formatが正常に定義されてるなら
あとはFormat関数で好きに取り出せるんじゃ無いかな
0120デフォルトの名無しさん2017/01/12(木) 20:01:33.08ID:6fAXJ0U3
例え元のデータが何であっても「日付として解釈出来る形式」ならDate型に入れれば変換してくれるだろ。
0121デフォルトの名無しさん2017/01/12(木) 20:07:33.99ID:yR99XFwh
で?っていう
0122デフォルトの名無しさん2017/01/12(木) 20:39:27.21ID:UE8PLb8+
日付が数字で入ってるかどうかなんて質問に関係ないよな
0123デフォルトの名無しさん2017/01/12(木) 20:42:03.60ID:eBGwra53
>>122
型によって処理が変わると思うのだが
0124デフォルトの名無しさん2017/01/12(木) 20:46:28.71ID:UiBlAwbG
>>123
Date型の変数に入れれば日付になるじゃん
0125デフォルトの名無しさん2017/01/12(木) 20:54:08.91ID:yR99XFwh
不勉強で申し訳ないが世に文字列以外のファイル名を採用したファイルシステムがあるのなら是非教えて頂きたい
0126デフォルトの名無しさん2017/01/12(木) 21:08:16.17ID:eBGwra53
>>124
例えば
2017/1/12
20170112
1/12/2017
シリアル値
全部同じになるっけ?
0127デフォルトの名無しさん2017/01/12(木) 21:22:08.35ID:UiBlAwbG
>>125
誰がそのまま使うって言ってんの
fileName = baseName & cStr(dte)
みたいな使い方するわけでしょ
>>126
知らんけど表示形式が違うだけならなるんじゃねえの
0128デフォルトの名無しさん2017/01/12(木) 22:11:57.92ID:Mdtl8esZ
じゃ無いかな くれるだろ 思う 知らんけど じゃねえの
もはや、妄想・空想・予想のスレッドに成り果てたか
盆、暮れ、正月ぐらいせめて少しは頭を休ませてろ
0129デフォルトの名無しさん2017/01/12(木) 22:24:16.56ID:URc2UNFw
あいてるセルにファイル名を生成する関数つくって、そのセル参照させればいいだけじゃないのけ?

保存場所どこにするかによってはスペースは使えないが。
0130デフォルトの名無しさん2017/01/12(木) 22:26:45.06ID:VnxSw5mv
>>95で解決した話題がまだ続いてる
0131デフォルトの名無しさん2017/01/12(木) 22:40:44.11ID:URc2UNFw
>>130
そうなんだ・・・しつれいした
0132デフォルトの名無しさん2017/01/12(木) 23:01:38.74ID:Rj8+4pg/
>>125
大型機だとファイルには整数のID番号が付いてるだけでファイル名とは切り離されて管理されてるやつがあるな
だから同じ名前のファイルがいくつも作れてしまったりする
0133デフォルトの名無しさん2017/01/13(金) 12:38:07.17ID:XGAIFzZi
Sheet1     Sheet2
A    B    A    B
東京  5    大阪   ○
大阪  4    福岡   ×
福岡  8    東京   ○

Sheet1
A    B   C
東京  5   ○
大阪  4   ○
福岡  8   ×

Sheet1のA列を軸にSheet2のB列の値を抽出する場合、
For〜 'Sheet1A列を順番に
 For〜 'Sheet2A列を順番に
  IF〜 'Sheet1C列に代入
 Next
Next
もしくは
For〜 'Sheet1A列を順番に
 Find.Row 'Sheet1A列の値を検索
 'Sheet1C列に代入
Next
どちらのほうが処理速度が向上しますか?
0134デフォルトの名無しさん2017/01/13(金) 12:39:52.43ID:xEiCBlzV
>>133
vlookup
0135デフォルトの名無しさん2017/01/13(金) 12:43:08.31ID:5NHpz1Ta
>>134
vlookup→配列に入れてif分岐→findの順番の早さ
findが遅いのは確か
0136デフォルトの名無しさん2017/01/13(金) 12:58:05.11ID:dokIsM4J
>>133
シートでsql
0137デフォルトの名無しさん2017/01/13(金) 13:02:40.73ID:5NHpz1Ta
findが遅いって言ってもセルを直接参照して処理するよりは早い
0138デフォルトの名無しさん2017/01/13(金) 13:15:44.54ID:HxNmVQ/n
>>137
ってことは、後者のほうが速いということでしょうか?
0139デフォルトの名無しさん2017/01/13(金) 13:24:35.21ID:Pq7AWenX
vlookup→配列に入れてif分岐→find→セルを直接参照してif分岐
0140デフォルトの名無しさん2017/01/13(金) 13:32:41.32ID:q4yhPByZ
えっと、関数は使うつもりはありません
伝えてなくてすいません
0141デフォルトの名無しさん2017/01/13(金) 13:33:30.31ID:q4yhPByZ
携帯回線のせいでIDがコロコロ変わる…
>>133です
0142デフォルトの名無しさん2017/01/13(金) 13:43:05.20ID:xEiCBlzV
>>140
vbaにはWorksheetFunctionと言うクラスが用意されている
その中にvlookupと言うメソッドがあるのでそれを利用すればいかが?

これを使いたくないってことなら勘違いでごめんなさい
0143デフォルトの名無しさん2017/01/13(金) 13:58:35.74ID:5NHpz1Ta
>>138
OfficeTANAKA 高速化テクニックでググれば幸せになれるよ
0144デフォルトの名無しさん2017/01/13(金) 17:01:55.73ID:OhnPZwk7
ジャパネット・・・
0145デフォルトの名無しさん2017/01/13(金) 22:23:24.75ID:N+jcCuX6
ていうか何行あるんだよ。
少なければWorksheetFunction.Vlookupで十分。
多ければ、高速VlookupかSQL。
0146デフォルトの名無しさん2017/01/13(金) 22:45:47.47ID:IUqNU+pk
Sub test()
Dim d, e
Set d = CreateObject("Scripting.Dictionary")
Set e = CreateObject("Scripting.Dictionary")

For Each x In Range(Sheet1.Cells(1, 1), Sheet1.Cells(Rows.Count, 1).End(xlUp))
If Not d.exists(x.Value) Then d.add x.Value, x.Offset(0, 1).Value
Next

For Each x In Range(Sheet2.Cells(1, 1), Sheet2.Cells(Rows.Count, 1).End(xlUp))
If Not e.exists(x.Value) Then e.add x.Value, x.Offset(0, 1).Value
Next

For Each x In d.keys
Debug.Print x & ":" & d(x) & ":" & e(x)
Next
End Sub
0147デフォルトの名無しさん2017/01/14(土) 14:19:38.12ID:eOx3RZdu
以下を実現するexcel vbaの書き方を教えてください。
お願いします。

セルA1に aaa
0148デフォルトの名無しさん2017/01/14(土) 14:20:50.66ID:eOx3RZdu
以下を実現するexcel vbaの書き方を教えてください。
お願いします。

セルA1に aaa"bbbb"cc
セルA2に a"dd"cccc
という文字列があるとき、
セルB1に bbbb
セルB2に dd
(それぞれ、" "で挟まれた文字列)を出力する。
0149デフォルトの名無しさん2017/01/14(土) 14:28:13.29ID:hMPeMSWC
>>148
split
0150デフォルトの名無しさん2017/01/14(土) 14:36:22.91ID:l+bXNSZh
>>148
Sub Macro1()
  [B1] = Split([A1], """")(1)
  [B2] = Split([A2], """")(1)
End Sub
0151デフォルトの名無しさん2017/01/14(土) 14:59:32.62ID:TCZ/fLWF
>>148
文字列関連の関数あらかた覚えなさい
難しくないから
0152デフォルトの名無しさん2017/01/15(日) 11:53:32.85ID:ncM8p+KA
>>145
高速vlookupって何?
0153デフォルトの名無しさん2017/01/15(日) 12:46:48.76ID:m2E/VbcR
このスレのテンプレにOfficeTANAKA入れたら質問激減しそう
ってレベルの質問が来るとガクッと来る
0154デフォルトの名無しさん2017/01/15(日) 14:21:19.63ID:FqEOuXry
ガクッと来るのも自由、回答したくないなら回答しないのも自由
レベルの制限をしてるわけじゃなし
0155デフォルトの名無しさん2017/01/15(日) 14:36:53.95ID:m2E/VbcR
>>154
まあそらそうなんだけども
ググった方が早くねって言うね
0156デフォルトの名無しさん2017/01/15(日) 18:05:40.34ID:trUVIHlw
確かに「まずググれよ」と思う質問はたまにあるな。

検索の仕方も分からないような状態ならともかく、
このスレに書いてる単語を並べていけばたどり着くだろ的なのも多い。

ちゃんとしたサイトの方が図で説明してくれるから分かりやすいだろうし。
0157デフォルトの名無しさん2017/01/15(日) 19:40:36.26ID:1Rt+ERT2
>>152
検索対象を昇順ソート
      ↓
VLOOKUPで1列目の文字を近似値一致検索
(但しA:Aとかは駄目で、A1:A500とかにする)
      ↓
検索で引っかかった文字が、
検索値と完全一致なら、
再度VLOOKUPで近似値一致検索


正直、何でこれで速くなるのかわからんし、
普通のVLOOKUPの検索アルゴリズムも、
最初からそうしろよって思う。
0158デフォルトの名無しさん2017/01/15(日) 21:24:21.25ID:tflJaJ6v
>>157
とにかく完全一致検索が遅いから使いたくない、じゃどうするか
ってことなんででしょうね。

Office Tanakaの
http://officetanaka.net/excel/function/function/vlookup.htm
に「検索値が見つからないとき超えない最大値を返す仕様がとても助かる」とあるけど
検索値をはさむ[from, to]がわかるのが一番助かると思う。
(検索値が存在しない場合は、to < from)
0159デフォルトの名無しさん2017/01/16(月) 02:21:21.17ID:vCWbmiBt
>>157
完全一致だとデータがソートされてる保証が無いから全件検索必須
近似値指定だとデータがソートされてる前提だから効率的に探せる
そいう事だろ、たぶん
0160デフォルトの名無しさん2017/01/16(月) 03:49:06.71ID:L7GtxIZz
二分検索木とか知らん馬鹿ばっか
0161デフォルトの名無しさん2017/01/16(月) 05:39:23.40ID:/FyYs0Da
>>160

馬鹿です。
Google先生に聞いたら「もしかして二分探索木?」と言われてしまいました。
これが高速Vlookupの原理?
WikiPediaで調べてみたのですがピンときません。
分かりやすい解説サイトでもあれば教えてください。
# 旧いMac(System7時代)のFileAllocationTableに B-Treeなんたら
というものがあったような、、関係あるのかな?
0162デフォルトの名無しさん2017/01/16(月) 05:48:43.71ID:K1gRWFXI
ソート済のデータ検索なら バイナリサーチ(二分探索)じゃね?
0163デフォルトの名無しさん2017/01/16(月) 07:22:24.37ID:Zl2rcSDP
>>160
木構造にはなっていないのでは?
0164デフォルトの名無しさん2017/01/16(月) 08:37:09.32ID:6pMMhvrL
>>163
二分探索は別に木構造じゃなくても...
って書こうとしたら >>160 は「二分検索木」って書いてたのか
まあ検索でも間違いじゃないだろうけどあまり使わないような気がするな
0165デフォルトの名無しさん2017/01/16(月) 11:22:13.15ID:q0YsoZyP
ソート済の二分探索なら100個の時7回ループ、500個なら9回、100万個でも20回ループすれば終わるから
0166デフォルトの名無しさん2017/01/16(月) 15:06:17.75ID:CkU8X3ZM
30もない俺のシートじゃ意味なさそうやな
0167デフォルトの名無しさん2017/01/16(月) 23:26:54.44ID:Py9dY2eU
ソート済でも完全一致が遅いのは何故?
一致するのを見つけたら、それ以上探さないで次に行けば、
近似値でも同じことじゃないかと思うんだけど。
0168デフォルトの名無しさん2017/01/16(月) 23:32:38.53ID:Zl2rcSDP
>>167
ソート済かどうかなんてわからないから頭から舐めていく
0169デフォルトの名無しさん2017/01/17(火) 00:13:17.79ID:HvycQCZc
>>168
一致するのが複数あっても、
どうせ1番上の1個しか拾ってこないんだから、
見つかった時点でループ抜けりゃいいじゃんって事なんだけど。

近似値だと探し方が違うの?
0170デフォルトの名無しさん2017/01/17(火) 00:17:50.89ID:jzPK8o2C
>>169
いやだから頭から一つ一つ舐めていく必要があるかどうかの違い
0171デフォルトの名無しさん2017/01/17(火) 00:26:02.89ID:Upzxz6/t
>>170
近似値だと頭から見なくてよいのはなんで
具体的にどうやってると考えてるの
0172デフォルトの名無しさん2017/01/17(火) 00:28:39.30ID:jzPK8o2C
>>171
辞書で単語を引くときにやっているやり方さ
0173デフォルトの名無しさん2017/01/17(火) 00:32:26.63ID:Upzxz6/t
>>172
辞書を作るときは頭から見なくてよいの?
0174デフォルトの名無しさん2017/01/17(火) 01:00:47.32ID:035vzIzN
>>173
書籍としての辞書を利用するときをイメージするといいかも
まず視覚的に先頭文字の見出しの位置を開いて調べる
この感覚

近似値を利用する場合は「文末違うけどだいたいこんな感じだよね」って得るためより正確な情報を得るためにはソートする必要がある
完全一致だとそもそも一致していることが条件となるのでソートする必要がなくなる

正確に言うと異なると思うけどだいたいこんなイメージ
0175デフォルトの名無しさん2017/01/17(火) 01:13:18.56ID:mp4Rluyj
https://msdn.microsoft.com/ja-jp/library/office/ff726673(v=office.14).aspx#xlLookups
0176デフォルトの名無しさん2017/01/17(火) 06:36:26.66ID:Upzxz6/t
>>174
完全一致でも昇順に並べられていることを前提とすれば辞書方式が使えると思うけどな
0177デフォルトの名無しさん2017/01/17(火) 07:13:51.32ID:jzPK8o2C
>>176
使えるが そういう仕様に なってない
0178デフォルトの名無しさん2017/01/17(火) 09:11:54.79ID:035vzIzN
個人的には完全一致の場合ソート不要って仕様はありがたい
0179デフォルトの名無しさん2017/01/17(火) 19:24:38.16ID:gxb7F/t0
>>175

いろいろ勉強になりました。
十数年、vlookupは特殊な場合を除いて完全一致で使うものだと思っていました。
数十万のvlookupをかけて3時間ぐらい帰ってこないような処理をしたことがあり
いま考えると無謀だったなと、、
0180デフォルトの名無しさん2017/01/17(火) 20:31:05.76ID:EPmzwVho
xml文を読み込んで階層、パラメータ名、設定値を求めるvbaの書き方がわかりません。
どなたか教えてくださいお願いします。

イメージ図:
http://www.dotup.org/uploda/www.dotup.org1127385.jpg
I1にXML文、A〜G列の1-2行目がある状態でVBAを実行すると、
A〜G列の3行目から下が出力されるイメージです。
XML文全体は約500行のものが複数、どれも階層は4以下です。

以上、よろしくお願いします。
0181デフォルトの名無しさん2017/01/17(火) 21:21:06.99ID:pDqJREhG
>>180
この辺りを見てがんばれー
http://freefly3104.hatenablog.com/entry/2015/04/03/222516
0182デフォルトの名無しさん2017/01/17(火) 21:22:53.32ID:UOrZs7iT
>>180
ノード名もパラメーターとして出す(イメージ図で言う太字の箇所)
で良いのかい?

あと、階層の各列には同じ数値しか入らない
で良いのかい?

これを求めているのなら求めているで構わないけど得られる結果をまた精査することになると思う
■ このスレッドは過去ログ倉庫に格納されています