アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になっております。
A列の数字に対応したB列についているコメントをC列表示させる・・・

マクロで組んでいるのですが、
できれば、コメントの内容を取得できたらいいな、と思いまして。

Set 範囲 = Workbooks("あああ.xls").Worksheets("マスター").Range("A2:G4000")
ThisWorkbook.Activate
列番号 = 7
検索値 = (Worksheets("いいい").Cells(C + 10, 2))
Cells(C, 4).Value = WorksheetFunction.VLookup(検索値, 範囲, 列番号, False)
Next C

といった具合に組んでいます。
調べたのですが、ヒットしなくて・・・
きっとできないのかな?思い最終手段として、こちらでご質問させて
いただきました。
宜しくお願い致します。

A 回答 (4件)

コード全体の構造が判らないので、


Functionプロシージャにしてみました。

下記コードを本体のコードと同じモジュールに記述して、
本体のコードの
 Cells(C, 4).Value = WorksheetFunction.VLookup(検索値, 範囲, 列番号, False)
としている部分を、
 Cells(C, 4).Value = CVLookup(検索値, 範囲, 列番号, False)
に変更すれば、ご要望のように動作するハズです。

'=================↓ ココカラ ↓=================
Function CVLookup( _
 ByVal keyVal As Variant, _
 ByVal orgRng As Range, _
 ByVal rstCln As Long, _
 ByVal optFlg As Boolean _
 ) As String
 Dim rstRwn As Long
 Dim keyRng As Range
 Set keyRng = orgRng.Columns(1)
 With WorksheetFunction
  rstRwn = .Match(keyVal, keyRng, optFlg)
  CVLookup = .Index(orgRng, rstRwn, rstCln).Comment.Text
 End With
End Function
'=================↑ ココマデ ↑=================

例えば、下記のテストコードは、
A1:C10の範囲について、E1セルの値をA列からを検索して、
その行のC列のコメントを取得し、F1セルにセットします。

Sub test()
 Range("F1").Value = CVLookup(Range("E1"), Range("A1:C10"), 3, False)
End Sub

ご参考まで。
「vlookでコメントの内容を取得・・・」の回答画像4
    • good
    • 1
この回答へのお礼

すごいすごいすごいです!!!!!
できました。希望通りのものができました!
鼻息が荒くなりました。
ひとりで「すっげ~」とつぶやいてしまいました。

Functionプロシージャ、聞いた事もなく、
”CVLookup”はググっても、1件しか出てこなかったです。(日本語サイト)
どうにか勉強したいと思います!

有難うございました!!

お礼日時:2009/06/23 18:01

For C=XXX To XXXXXが有りませんね。


Cells(C,4)は具体的にはマスターシートになりますね。
マスターシートでそのセルは指定の範囲に入っていますがそれでよろしいのですね。

この回答への補足

For C = 14 To 27
があります。すみません。記入漏れです。

足りなすぎですね。申し訳ないです。
Cells(C,4)はあああxlsのマスターシートのセルになります。

ThisWorkbookは、あああxls とは、別のブックになります。

補足日時:2009/06/23 17:13
    • good
    • 0

コメントという言葉を不用意に使わないこと


(1)一般的な用法で、何か注釈や意見を加えた文章
(2)EXCELの場合はセルの属性としてのコメント
EXCELでも(1)の文章をセルの値として入力することは有るでしょう。だからややこしい。
ーー
もし(2)なら、EXCELの関数に関する重大な認識不足です。EXCELの関数は、主に他「セルの値」を使ってセルの値を1つ決める(計算が多いが)するものです。コメントはセルの属性の1つで、セルの値(VALUE)とは別世界です。その片鱗は「形式を選択して貼り付け」のダイアロウグの「貼り付け」に列挙されている区分に見られます。セルの値と「表示形式などの書式」も世界が違います。
だからVLOOKUP関数などつけるはずがない。
もちろん別のセルの値としてセルの値になっておれば、検索の対象になりますが、2重化して持つことがあるかどうか。
>A列の数字に対応したB列についているコメント
の対応したが、意味がはっきりしません。A列の数字に対応したコメントはそのセルに入っているのが普通ではないですか。飛び離れたセルに入っているはずは無いと思うが。
実例を挙げるとかして質問のこと。
質問の意味を推測で
A列に入っているコメントを同行右のD列にテキストとして表示したいなら
Sub test01()
Workbooks.Open "01化.xls" '同一フォルダとする
Set sh1 = Workbooks("01化.xls").Worksheets("Sheet1")
sh1.Activate
d = sh1.Range("a65536").End(xlUp).Row
For Each cl In sh1.Range("a1:A" & d)
MsgBox cl.Comment.Text
sh1.Range("D" & cl.Row) = cl.Comment.Text
Next
End Sub
    • good
    • 0
この回答へのお礼

説明不足で済みません。
今後の質問の仕方にも参考にさせて頂きます。
ご回答の方も有難うございます。

お礼日時:2009/06/23 18:06

コメントはセルの値じゃないのでVlookupでは取得できません


目的のセル番地を取得しCells(セル番地).Comment.Text で取得します。

Cells(C, 4).Value =Cells(セル番地).Comment.Text
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
やはりできないのですね。
コメントをセルに書き込む仕様に変更します。。。

お礼日時:2009/06/23 17:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!