以前似たよな質問をしましたが、少し違うので許してください。
maron--5さんから
   A    B      C~E     F     G    H
1  番号  家紋名                     柏
2  1   いたどり           該当なし      酸漿草
3  2   ひげ丸揚羽蝶       揚羽蝶       桔梗
4  3   ほいのし           該当なし      蛇の目
5  4   むくみ稲妻         稲妻        鷹の羽
6  5   むくみ花菱         花菱        稲妻
7                                揚羽蝶
8                                花菱

1)H列を作業列として、ジャンル一覧を入力(別に他のシートでもいい)
2)F2の式
F2=IF(SUMPRODUCT(COUNTIF(B2,"*"&$H$1:$H$8&"*")),LOOKUP(1,0/COUNTIF(B2,"*"&$H$1:$H$8&"*"),$H$1:$H$8),"該当なし")
という式を教えていただきました。

B列に並んでいる文字の中から別の列に並んだジャンル一覧の文字が一致すればその文字をF列に抽出するという式です。

教えてほしいことはジャンルがたくさん並んでいるのですが、そのジャンルが重複した場合のことです。現在F列に抽出されたもじが出てきますが、G列に2つ重複した場合はそのジャンル名が出てくるようにできるでしょうか?たとえば「七宝に花菱」という文字がB列にあって、ジャンルには「七宝」と「花菱」がある場合ということです。そのときにF列に「七宝」G列に「花菱」と出したいのです。
maron--5さんはじめ、わかる方教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

こんにちは。



やっぱり、VBAでしょうね。別の質問の中は、VBAの質問もあるようですから、VBAがお分かりになるという条件で、書きました。

buf(5) は、数を増やせば、もっと入れられます。

'標準モジュール

Function CheckItems(ByVal strText As String, Items As Range, i As Integer)
Dim v As Variant
Dim j As Integer
Dim buf(5) As String '6個の種類が出せる(5+1)
 If strText = "" Then CheckItems = "": Exit Function
 For Each v In Items
   v = Replace(v, Space(1), "", , , 1)
   If InStr(1, strText, v, 1) > 0 Then
     buf(j) = v
     j = j + 1
    End If
 Next v
 If buf(0) = "" Then
   buf(0) = "該当なし"
 End If
  If i <= UBound(buf) Then
    CheckItems = buf(i - 1)
  Else
    CheckItems = ""
  End If
End Function


ワークシートの数式は、以下のようになります。

=CheckItems($B2,$H$1:$H$9,COLUMN(A$1))

被検索値, 検索項目範囲,インデックス(1-6 まで)

これを、右にドラックすれば、
=CheckItems($B2,$H$1:$H$9,COLUMN(B$1))

とインデックスが、Bになるので、2が代入されて、2番目の文字が出てきます。

結果

該当なし
揚羽蝶
該当なし
稲妻  
花菱  
花菱  七宝
    • good
    • 0
この回答へのお礼

ありがとうございました。
この対処方法で解決しました。

お礼日時:2007/10/06 17:14

関数での回答希望はわかりますが、式が長くなるので、ユーザー関数の定義でやってみました。


VBEの標準モジュールに
Function vl(a, b, n)
Dim cl As Range
vl = ""
k = 0
For Each cl In b
p = InStr(a, cl)
If p <> 0 Then
k = k + 1
If k = n Then
vl = cl
Else
End If
Else
End If
Next
End Function
を貼り付ける。
ーー
例データ
B16:B24
aabb
cc
aacc
cc
bb
ccaa
bbaa
xxbb
xxbbaa
E16:E18にジャンルのリスト
aa
bb
xx
F16に
=vl($B16,$E$16:$E$18,COLUMN()-5)
(=VL(注目セルジャンル表範囲,何番目)の意味です。
F列から右列に出すので、COLUMN()-5が何番目を表せる。)
と入れてF24まで式複写する。
F18:F24までの式をI18:I24まで式を複写する。
結果
F18:I24(4列、最大でジャンル4個まで出すので)
aabb

aa

bb
aa
aabb
bbxx
aabbxx
最大5までならJ列まで式を複写。
    • good
    • 0

かなり力業ですが


=IF(SUMPRODUCT(1-ISERR(FIND(INDIRECT("$H$1:$H$"&COUNTA(H:H)),B2))),,"該当なし")&IF(ISERR(FIND($H$1,B2)),"",$H$1)&IF(ISERR(FIND($H$2,B2)),"",$H$2)&IF(ISERR(FIND($H$3,B2)),"",$H$3)&IF(ISERR(FIND($H$4,B2)),"",$H$4)&IF(ISERR(FIND($H$5,B2)),"",$H$5)&IF(ISERR(FIND($H$6,B2)),"",$H$6)&IF(ISERR(FIND($H$7,B2)),"",$H$7)&IF(ISERR(FIND($H$8,B2)),"",$H$8)

例えば
{"柏";"";"桔梗";"";"";"";"揚羽蝶";""}
と言ったような
文字列の配列数式の各要素を
「柏桔梗揚羽蝶」と言う風に繋ぎたいとするとき

今回の上記のような力業でなく
エレガントな方法でつなぐやり方は
残念ながら私の知る限りでは
まだ発表されていないと思います。

昨年年始に私もトライしたのですが
かなりな難問ですね。
    • good
    • 0

   A     B      C D E     F       G     H       I


1  番号  家紋名                                  柏
2  1    いたどり                                  酸漿草
3  2    ひげ丸揚羽蝶        揚羽蝶                  桔梗
4  3    ほいのし                                 蛇の目
5  4    むくみ稲妻          稲妻                   七宝
6  5    稲妻花菱と蛇の目     蛇の目    稲妻   花菱     稲妻
7  6    七宝に花菱         七宝      花菱           揚羽蝶
8                                              花菱

F2=IF(COLUMN(A1)>SUMPRODUCT(COUNTIF($B2,"*"&$I$1:$I$8&"*")),"",INDEX($I$1:$I$8,SMALL(INDEX(SUBSTITUTE(COUNTIF($B2,"*"&$I$1:$I$8&"*")*1,0,10^5)*ROW($I$1:$I$8),),COLUMN(A1))))

★右にH2までと下にコピー
★3種類まで可能です、もっと右までコピーすれば何種類でも可能です
★ただし、「該当なし」は表示されません
    • good
    • 0
この回答へのお礼

ありがとうございました。関数での対処ではこの方法が私にはわかりやすかったです。勉強になりました。

お礼日時:2007/10/06 17:16

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qバイナリ一致 音質の違いについて

光学ドライブの品質によって、リッピングした音楽ファイルの音質に違いが出るのかという話です。
表題の件について色々検索しましたが、
最終的な結論がよくわからなかった為質問させて頂きます。
まず2つの意見があります。

(1)一般的には読み取るディスクに問題がなければ、
  どの光学ドライブでもリッピングされたデータ(バイナリ)は一致する。
  よって音質は変わらない。

(2)音楽ファイルはデータ的には一致するが厳密には違いがある。
  その違いによって読み取る光学ドライブによって音質も微妙にかわる。

(2)の理由として
・ジッターの影響は書き込みだけでなく読み込む際にも影響する。
・バイナリの「1と0」といったデータにも完全なものとそうでないものがある。
・ブラインドテストすれば6~7割で聞き分けられた。
 こういった書き込みが見受けられました。

教えて頂きたいのが、
光学ドライブによって音質が変わると仮定して(バイナリ一致はするものとする)
それを目で見える形(数値やグラフ)で表すことはできないのか
ということです。

これが出来なければ音質に違いが出るということには結論にならないのでは?
と私は思いました。

他に確実に違いが分かる方法などあれば教えて頂ければと思います。

長くなりましたが以上です。
宜しくお願い致します。

光学ドライブの品質によって、リッピングした音楽ファイルの音質に違いが出るのかという話です。
表題の件について色々検索しましたが、
最終的な結論がよくわからなかった為質問させて頂きます。
まず2つの意見があります。

(1)一般的には読み取るディスクに問題がなければ、
  どの光学ドライブでもリッピングされたデータ(バイナリ)は一致する。
  よって音質は変わらない。

(2)音楽ファイルはデータ的には一致するが厳密には違いがある。
  その違いによって読み取る光学ドライブによって音質も微...続きを読む

Aベストアンサー

>それを目で見える形(数値やグラフ)で表すことはできないのか
私もかねてからそのようなことを強く望んでいる一人です。しかし、残念ながら、そのようなものを見たことはありません。少し古めの資料ですが、ジッターと音質の関係についてさえ賛否両論があるくらいなので、リッピング条件の違いまで踏み込むのは当分先か望み薄かと思います。
http://www.spatiality.jp/pcaudio-research/pcaudio-learning/clock-jitter

なお、以下の点ははっきりしておきますが、
通常のCDを通常の光学ドライブでリッピングする場合、バイナリは一致します。一致しないのは、状態がとても悪いCDやCD-DAをまともに扱えないほど古いドライブを用いた特殊な場合だけです。
比較にはWaveCompareをツ使う人が多いです。http://efu.jp.net/soft/wc/wc.html

なお、なお、CDプレーヤーのS/PDIF出力も、(ビットパーフェクトに設定された)PCのS/PDIF出力も、同じデジタルデータを出力していることに留意していただきたいと思います(適正な方法でデジタル録音すると確認できます)。

>それを目で見える形(数値やグラフ)で表すことはできないのか
私もかねてからそのようなことを強く望んでいる一人です。しかし、残念ながら、そのようなものを見たことはありません。少し古めの資料ですが、ジッターと音質の関係についてさえ賛否両論があるくらいなので、リッピング条件の違いまで踏み込むのは当分先か望み薄かと思います。
http://www.spatiality.jp/pcaudio-research/pcaudio-learning/clock-jitter

なお、以下の点ははっきりしておきますが、
通常のCDを通常の光学ドライブでリッピングする...続きを読む

Qエクセルである列に重複する文字列があるとき、その文字列の右の列の「数値」の合計がしりたい

電話対応者、A、Bがいます。それぞれの対応時間がエクセルで、下記のようにセルで並んでいます。
A a秒
A b秒
B c秒
A d秒
B e秒
B f秒
A g秒

A、B、それぞれの総電話対応時間を集計したいのですが、
エクセルではどうすればいいのでしょうか?

Aベストアンサー

回答番号:No.1です
こんな時間に意外と回答が付きますね...ちょっとびっくり

では、こんな方法もありますよっ てことで
やはり、フィールド名が必要で、対応時間は数値です

1. 電話対応者で並び替える(昇順、降順どちらでも良い)
2. データ - 集計
3. グループの基準 電話対応者
4. 集計方法 合計
5. 集計するフィールド 対応時間
6. [OK]

Q性格の不一致について

よく性格の不一致で離婚すると言葉にしますが
そもそもそれって結婚するにあたって、致命的なことではないのでしょうか?
一見かっこいい理由みたいな感じの言い方に聞こえますが...
そんな致命的な事も考えずによく結婚に踏み切れたものだなぁ..
と逆に感心してしまいます。
性格の不一致という理由で離婚に踏み切った方にお伺いしたいのですが
なぜそんな致命的な事なのに、あえて結婚しようなんて思ったのでしょうか?
性格の不一致=価値観の違いと言う人もいますが、価値観の違いもかなり
致命的ですよね....

Aベストアンサー

私は離婚経験者ですが、
浮気や金銭トラブルなどの具体的な原因があったワケではなかったので、
分類上は“性格の不一致”という理由になるのでしょう。

まず、貴方の疑問の背景には、
人の気持ち、考え、好みや価値観などが、いつまでも変わらずに、
普遍的だという固定観念があるように見えますが、
それは大きな間違いです。

人の心は常に変化していて、
極端なコトを言えば、一晩、寝て起きたら、
別人格になっているぐらい違うものです。
それを“記憶”という情報で補正しながら、自分を維持してますが、
それでも、全く同じであり続けるなんて無理です。

恋愛感情という衝動は、まさにその典型で、
出会い、好き合っていると解った瞬間から、
冷静な判断力…特に相手に批判的な冷めた分析力は、皆無になります。
その情熱の帰結として、結婚した場合、
悲しいかな、統計的にも3年を限度に、その情熱はすっかり冷めてしまいます。

情熱が冷めた後、冷静な判断力を取り戻してから
相手を改めて観察した時、
かつては「アバタもエクボ」に見えた欠点が、
一緒に暮らして行くコトすら耐えられないほど、
許せない人格的欠陥に思えてしまったり、

恋してた時には可愛いと思えてた相手の気まぐれが、
ホトホト嫌になって、もう付き合い切れないと感じてしまったり、

または、様々な実生活での苦労を重ねるウチに、
自分の欲を捨て、家族のために犠牲になるコトを受け入れながらも、
相手は、相変わらず“青春”気分を引きずって、
働いて、生活を守るコトよりも、
目先の娯楽にばかり気を取られている“子供”のままだったりと、

人の変化(成長)の度合いが違ったり、
恋愛という“狂気”の為に判断力が麻痺していたり、
そうした違いが、結婚後、数年を経て出現するため、
“性格の不一致”という名目の離婚があるのです。

永続することを目的とした結婚相手を、
最初から冷静に見極めていれば、こうした破綻は避けられるかも知れません。
ただ、恋愛というのは遺伝子レベルで本能的に組み込まれた問答無用の衝動なので、
その本能を無視して、肉体関係を含む共同生活を営む相手を、
そこまで冷静に選べるのかどうか、私には少し疑問です。

また、冷静に選べたとして、結婚した後に、
別に新たな恋愛衝動を駆り立てられる相手と出会わないとも限らないワケで、

結局のところ、「歳々年々花相似たり 年々歳々人同じからず」の如く、
将来、何が起こるのか、自分の身の回りだけでなく、
自分自身の感じ方、考え方さえも、先々の事は予想しきれない為に、
結婚が破綻する事も、多々あるのです。

今の貴方の価値観、考え方、性格が、5年先、10年、20年先も、
まったく変わらず、同じなら、“性格の不一致”なんて口実にすがる必要はないでしょう。
でも、人は誰でも、変わって行くものなのです。
また、まったく変わらない人間も、それはそれで破綻の原因になるでしょうね。
ロボットみたいな奴と、長く暮らせるとも思えませんからね。

私は離婚経験者ですが、
浮気や金銭トラブルなどの具体的な原因があったワケではなかったので、
分類上は“性格の不一致”という理由になるのでしょう。

まず、貴方の疑問の背景には、
人の気持ち、考え、好みや価値観などが、いつまでも変わらずに、
普遍的だという固定観念があるように見えますが、
それは大きな間違いです。

人の心は常に変化していて、
極端なコトを言えば、一晩、寝て起きたら、
別人格になっているぐらい違うものです。
それを“記憶”という情報で補正しながら、自分を維持して...続きを読む

Qセル内にリストに当てはまる文字列がある場合に文字列の抽出をしたい

A列にデータがあり、D列にリストがあります。
A列のデータには様々な文字列が入っていますが、
D列のリストと一致する文字列があればB列に
その文字列を返したいのですが
色々関数を組み合わせてみたのですが上手くできません。

当てはまる関数を教えてもらえないでしょうか。
ちなみにD列のリストは最大40個程になる予定です。

Aベストアンサー

個人的に配列は極力避けたいので、次のような作業列で説明します。

1行目のE列以降にリストを横に並び替えます。
(邪魔であればもっと右でもいいし、別のシートでもいいです)
例えば、E1にりんご、F1にもも…となります。
E1=INDIRECT("D"&COLUMN()-COLUMN($D1)+1)
これで、E1ならCOLUMN()はEが5番目なので5、COLUMN(D1)はDが4番目なので4、5-4+1=2
D&2なのでD2、INDIRECT(D2)となるので、D2のデータが表示されます。
リストの数(つまり40列?)右にコピーしてください。

まず、りんご(E列)との交点に「その行のデータの中に"りんご"が含まれるかを確認し、含まれているなら"りんご"、含まれてなければ""(空白)」を表示します。
E2=IF(COUNTIF($A2,"*"&E$1&"*")=1,$A2,"")
ただし、この場合A2に「りんご飴」とあっても「りんご」が含まれると判定されますが。
それを避けるのであれば、
E2=IF(ISERROR(FIND(","&E$1",",","&$A2&","))=TRUE(),"",E$1)
これはデータの区切りが","で統一されていること前提ですが、
データの前後及びリストの前後に","を加えることによって、前後が","で区切られた状態で、リストに一致するものの検索を行っています。
FINDを使っての検索になりますので、エラーの場合に空白、該当があれば1行目のデータを表示させるようにしています。
これをデータの数に合わせて下へコピーしてください。

一致するリストが複数あった場合の為に、F列以降は少し式を変形させます。
一致に該当せず、左のセルが空白であったなら空白、空白でなかったならそれと同じデータを表示。
一致に該当し、左のセルが空白であったならリストの内容、空白でなかったならそれと同じデータに","とリストの内容を加える。
とします。なのでデータの全てがリストに一致した場合は、右端のセルはデータと同じものになっています。
一致しなかった場合は空白、一部一致した場合はその一致したデータだけ表示されます。
F2=IF(ISERROR(FIND(","&F$1",",","&$A2&","))=TRUE(),IF(E2="","",E2),IF(E2="",F$1,E2&","&F$1))
これをデータとリストの数だけ下&右にコピーしてください。

40番目の列が何か分からない(数えれば分かりますが…)ので、仮にAZとします。
AZの列には40個のリスト全てにおいて一致した結果が表示されていることになります。
つまり、それをB列に表示させればいいのです。
B2=AZ2
(このAZを該当する最終列の列名に置き換えてください)
これをデータの数だけ下にコピーすれば完了です。

個人的に配列は極力避けたいので、次のような作業列で説明します。

1行目のE列以降にリストを横に並び替えます。
(邪魔であればもっと右でもいいし、別のシートでもいいです)
例えば、E1にりんご、F1にもも…となります。
E1=INDIRECT("D"&COLUMN()-COLUMN($D1)+1)
これで、E1ならCOLUMN()はEが5番目なので5、COLUMN(D1)はDが4番目なので4、5-4+1=2
D&2なのでD2、INDIRECT(D2)となるので、D2のデータが表示されます。
リストの数(つまり40列?)右にコピーしてください。

まず、りんご(E列)との交点に「その行...続きを読む

Q時制の一致にしなくてもよいのは?

写真の文章だと時制の一致で無いように
思うのですが、一致が必要な場合と
必要で無い場合で文章にどんな違いがあるので
しょうか?分かりやすい回答よろしくお願いします。

Aベストアンサー

写真の2例は時制の一致の文ではないですね。
時制の一致というのは主節が過去になった場合、従属節も過去の方へ一つずれる(現在形→過去形へ、また過去形→過去完了へ)ということですので。

たとえば
I think he is hungry.(彼は空腹だと思う)
は、主節(I think)が過去になると、
I thought he was hungry.に変わります。
☆訳し方に注意
(彼は空腹だと思った)

24 これはIt seemsという主節が現在形ですので、that 以下の文は日本語訳そのままの過去時制になっています。(昨日の地震で、たくさんの損害があった)

これを時制の一致の例として書くのであれば、It seemedと主節を過去形にすると、
It seemed that much damage had been done by yesterday's earthquake.
と、that 以下の文が、was done(過去形)からhad been doneと過去完了に変わることを言います。

これも日本語訳と同じ過去になっています。(先生はジャックのエッセイに喜んだ)

25 これは主節・従属節には分かれていない単文ですので、時制の一致とは関係ありません。

なお、時制の一致の法則を受けないものは
①一般的真理の場合
We learned that the earth goes round the sun.(地球は太陽の周りを回ると学んだ)

②現在の事実・習慣
He said that school begins at eight.(彼は学校は8時に始まると言った)

③歴史上の事実
The teacher told us that the French revolution broke out in 1789.(先生はフランス革命は1789年に起こったと私達に言った)

④事実上の現在、あるいは未来
The teacher told us that he is going abroad next week.(先生は私たちに彼は来週外国へ行くと言った・・・これがまだ”生き”の場合)

⑤仮定法を含む場合
I wished I were taller.(もっと背が高ければいいのに・・・仮定法はもともと想像であるので、時制の一致を受けません)

⑥比較を表す節の場合
Eastern countries were more mysterious than they are now.(東洋の国々は現在よりもっと神秘的だった)

写真の2例は時制の一致の文ではないですね。
時制の一致というのは主節が過去になった場合、従属節も過去の方へ一つずれる(現在形→過去形へ、また過去形→過去完了へ)ということですので。

たとえば
I think he is hungry.(彼は空腹だと思う)
は、主節(I think)が過去になると、
I thought he was hungry.に変わります。
☆訳し方に注意
(彼は空腹だと思った)

24 これはIt seemsという主節が現在形ですので、that 以下の文は日本語訳そのままの過去時制になっています。(昨日の地震で、たくさんの損害が...続きを読む

Q(エクセル)重複値の上側数値の非表示/削除 重複した数値があった場合に1番下側にある重複値のみを残し

(エクセル)重複値の上側数値の非表示/削除
重複した数値があった場合に1番下側にある重複値のみを残し,他は非表示/削除したいのですが、関数を使って良い方法はありませんか?
上側を非表示/削除する場合はcountif関数で可能なようですが,下側となると分かりません。。

写真の例のように重複値がある場合はその1番下だけを残し、他は非表示/削除したいです。
お願いいたします。。

Aベストアンサー

[No.4]の別解
=IF(COUNTIF(A2:A999,A2)=1,A2,"")

Q性欲の不一致

性欲の不一致
アラサーの男性です。
性欲の不一致、性についての価値観の違いで婚約解消、離婚はありえるでしょうか?
たとえば、
彼がすごい性欲で毎日でもHしたいが、彼女は1週間に1回でいい場合等

ご意見等いただけたら、幸いです。
よろしくお願いします。

Aベストアンサー

婚約の解消はあり得ますよ。

性欲の不一致は重大な問題です。
我慢すれば家庭外に求めるようになります。

婚約中からそれでは将来が見えるようです。

いざ子ども作ろうと言う時も(私は結婚後三年子どもができませんでした。)週一なのかな?
子ども作りのセックスはむなしいよ。今排卵期だからとか言われると嫌になりました。

結婚したら二人の世界が始まります。お互いを求め合う。素晴らしいと思います。
それができないなら、止めておいた方が良いと思います。

君が、好きなら我慢して週一でも月一でも我慢して結婚してくださいね。

恋、愛なら求め合うのが自然だと思います。もっと愛し合える人の方が良いでしょう。
30代なら早めに決断を・・・・

Qexcel 文字列の重複していない部分を抽出したい

色々探してみたのですが、わからず大変困っています。宜しくお願い致します。

やりたいこと:下記のデータから、共通する部分を除外して特定セルに貼付けたい。

<補足説明>
共通部分が1ヵ所の物と、2か所の物がありますので、出来れば両方抽出したいですが、もし2か所あると不可な場合は、共通部分1ヵ所のみの抽出でお願い致します。
※共通部分は最大2か所迄で、位置はランダムです。
※データ数は1~3000です。
※商品名の列はH列、抽出した文字列はV列に貼り付けます。

説明文も入れてくださると大変助かります。

【元データ】

セルH2:ボールペン あいう
セルH3:バッグA ブラック abc
セルH4:バッグA オレンジ abc
セルH5:バッグA レッド abc
セルH6:シャツB ブラック アイウ S
セルH7:シャツB ブラック アイウ M
セルH8:シャツB ブラック アイウ L
セルH9:シャツB ブルー アイウ S
セルH10:シャツB ブルー アイウ M
セルH11:シャツB ブルー アイウ L


【下記のようにしたい】 ※V列の文字列は半角スペースで区切りたいです。

セルH2:ボールペン あいう     セルV2:
セルH3:バッグA abc         セルV3:商品選択 ブラック オレンジ レッド
                            ※もしくは、ブラック オレンジ レッド
セルH4: セルV4:
セルH5:                 セルV5:
セルH6:シャツB アイウ        セルV6:商品選択 ブラック ブルー改行改行商品選択1 S M L
                            ※もしくは、ブラック ブルー改行改行S M L
セルH7:                 セルV7:
セルH8:                 セルV8:
セルH9:                 セルV9:
セルH10:                 セルV10:
セルH11:                 セルV11:

※最終的には、下記のようにしたいです。
セルH2:ボールペン あいう     セルV2:
セルH3:バッグA abc         セルV3:商品選択 ブラック オレンジ レッド
セルH4:シャツB アイウ        セルV4:商品選択 ブラック ブルー改行改行商品選択1 S M L

色々探してみたのですが、わからず大変困っています。宜しくお願い致します。

やりたいこと:下記のデータから、共通する部分を除外して特定セルに貼付けたい。

<補足説明>
共通部分が1ヵ所の物と、2か所の物がありますので、出来れば両方抽出したいですが、もし2か所あると不可な場合は、共通部分1ヵ所のみの抽出でお願い致します。
※共通部分は最大2か所迄で、位置はランダムです。
※データ数は1~3000です。
※商品名の列はH列、抽出した文字列はV列に貼り付けます。

説明文も入れてくださると大...続きを読む

Aベストアンサー

No.3です。

補足を読みました。
最初の質問とはサンプルがかなり異なるようですが・・・
いずれにしてもSheet1のH列データは最後が「色」になっているという前提です。
尚、色の前のスペースは半角でも全角でも対応できるようにしています。
そして、Sheet3を作業用のSheetとして使用していますので、
最低3Sheetあり、Sheet3は全く使用していないSheetにしてください。

標準モジュールに↓のコードをコピー&ペーストしてマクロを実行してみてください。

Sub Sample2()
Dim i As Long, k As Long, str As String, lastRow As Long, c As Range
Dim wS2 As Worksheet, wS3 As Worksheet
Set wS2 = Worksheets("Sheet2")
Set wS3 = Worksheets("Sheet3")
Application.ScreenUpdating = False
With Worksheets("Sheet1")
lastRow = wS2.Cells(Rows.Count, "H").End(xlUp).Row
If lastRow > 1 Then
Range(wS2.Cells(2, "H"), wS2.Cells(lastRow, "H")).ClearContents
Range(wS2.Cells(2, "V"), wS2.Cells(lastRow, "V")).ClearContents
End If
.Range("H:H").Replace what:=" ", replacement:=" ", lookat:=xlPart
For i = 2 To .Cells(Rows.Count, "H").End(xlUp).Row
If InStr(.Cells(i, "H"), " ") > 0 Then
str = Left(.Cells(i, "H"), InStrRev(.Cells(i, "H"), " ") - 1)
Set c = wS3.Range("A:A").Find(what:=str, LookIn:=xlValues, lookat:=xlWhole)
If c Is Nothing Then
wS3.Cells(Rows.Count, "A").End(xlUp).Offset(1) = str
End If
End If
Next i
For k = 2 To wS3.Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To .Cells(Rows.Count, "H").End(xlUp).Row
If InStr(.Cells(i, "H"), wS3.Cells(k, "A")) > 0 Then
If wS3.Cells(k, "B") = "" Then
wS3.Cells(k, "B") = Trim(Replace(.Cells(i, "H"), wS3.Cells(k, "A"), ""))
Else
wS3.Cells(k, "B") = wS3.Cells(k, "B") & " " & Trim(Replace(.Cells(i, "H"), wS3.Cells(k, "A"), ""))
End If
End If
Next i
Next k
End With
lastRow = wS3.Cells(Rows.Count, "A").End(xlUp).Row
Range(wS3.Cells(2, "A"), wS3.Cells(lastRow, "A")).Copy wS2.Range("H2")
Range(wS3.Cells(2, "B"), wS3.Cells(lastRow, "B")).Copy wS2.Range("V2")
wS2.Columns.AutoFit
wS3.Cells.Clear
Application.ScreenUpdating = True
End Sub

今度はどうでしょうか?m(_ _)m

No.3です。

補足を読みました。
最初の質問とはサンプルがかなり異なるようですが・・・
いずれにしてもSheet1のH列データは最後が「色」になっているという前提です。
尚、色の前のスペースは半角でも全角でも対応できるようにしています。
そして、Sheet3を作業用のSheetとして使用していますので、
最低3Sheetあり、Sheet3は全く使用していないSheetにしてください。

標準モジュールに↓のコードをコピー&ペーストしてマクロを実行してみてください。

Sub Sample2()
Dim i As Long, k As Long, str As S...続きを読む

Q一致する について

「AはBの構造と一致する」という意味の英文を書こうと思っています。
そこで、be consistent with、be in agreement with、be in accordance withのいずれかを使ってみようと思うのですが、これらの違いが良く分かりません。使用法としての違いをご存知の方は教えていただけますと助かります。

Aベストアンサー

「一致する」といっても、その内容によっていろんな表現方法があるでしょう(内容によっては、使える・使えないも含め)から、背景情報があると多くの回答が来ると思います。A,Bは何か?「一致する」の、貴殿の意図する意味は(分野や内容によって違ってくるでしょう)、「構造」とは・・・です。

また、「物と物とのマッチング」とのことですが、「マッチング」と「一致」では、選ぶ英語も変わってくるかと思います。

で、内容を勝手に、建築物の構造のようなものに言及していると解し、「一致」とは同じ・同等と解し以下:

1.「AはBの構造と一致する」は「Aの構造はBの構造と同じ(AとBは同類項目)」と解し少し例を:

A and B has the same structure.
A has the same structure as B.
The structure of A is the sames as that of B.
A is identical with B.(同等)

2.「AはBの構造と一致する」はそのまま(AとBとは同等項目でない)と解し:

A is identical with the structure of B.
A corresponds to the structure of B. (「一致」ではなく「対応する」のイメージですが)。

「物について一致する」というときに be consistent withは使いにくい気がします。これは、例えば、Our actions have been consistent with our basic policy. のような感じでつかい、「首尾一貫している、ぶれない」といったニュアンスですから、貴提示の文には合わないかと(内容わかりませんが)。

また、「物(可視有体物)」の「構造(同)」の「一致」では、agreementやaccordanceを使った表現は無理かなと思いますが・・・

これで参考にならないようでしたら、A, B, 構造、一致 ・・・の意味を明確にしてもらえれば、たくさん回答が寄せられるかと思います。

Hope this hepls.

「一致する」といっても、その内容によっていろんな表現方法があるでしょう(内容によっては、使える・使えないも含め)から、背景情報があると多くの回答が来ると思います。A,Bは何か?「一致する」の、貴殿の意図する意味は(分野や内容によって違ってくるでしょう)、「構造」とは・・・です。

また、「物と物とのマッチング」とのことですが、「マッチング」と「一致」では、選ぶ英語も変わってくるかと思います。

で、内容を勝手に、建築物の構造のようなものに言及していると解し、「一致」とは同じ・...続きを読む

Q2つの文字列から重複せずかつ一番ひだりのものだけを抽出したいです

A1 B1 C1 D1 E1 F1 G1 H1 J1
A B A B C D E


このような文字列がある中でC1に関数でCを表示させたいです。尚、E1~J1の文字列はランダムで順番が入れ替わりますし空白になったりします。


A1 B1 C1 D1 E1 F1 G1 H1 J1
A B C D B A


などです。いろいろ調べましたがどうしてもわかりません。
よろしくお願い致します。

Aベストアンサー

こういうことだろうか?
C1セルに
=INDEX(1:1,MIN(IF(A1<>E1:J1,IF(B1<>E1:J1,IF(E1:J1<>"",COLUMN(E1:J1))))))&""
[Ctrl]+[Shft] +[Enter] で確定、配列数式。{ }で挟まれる
対象が存在しない場合もあるならA列を挿入し、非表示にすればよい。
ただし、文字列の場合のみ


人気Q&Aランキング

おすすめ情報