<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBA: сортировать ячейки excel по содержимому]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=5606&amp;type=atom" />
	<updated>2011-04-12T07:27:33Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=5606</id>
		<entry>
			<title type="html"><![CDATA[Re: VBA: сортировать ячейки excel по содержимому]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=47565#p47565" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>User419e пишет:</cite><blockquote><p>Попытался сделать то, что вы хотели. Условия: таблица из трёх столбцов с заголовками (не обязательно такими, но обязательно с заголовками):</p><p>Наименования|&nbsp; &nbsp; Найденные|&nbsp; &nbsp; Что искать|<br />Гайка&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; &nbsp; &nbsp;гайк&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />Гайка&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; &nbsp; &nbsp;шуруп&nbsp; &nbsp; &nbsp; |<br />шуруп&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</p><p>В первом столбце ваш список, в третьем - шаблоны поиска(условие: в 1 и 3 столбце не должно быть пустых ячеек между заполненными). Сам макрос:<br /></p><div class="codebox"><pre><code>Sub gaika()

f = 1
r = &quot;A&quot; &amp; f
v = &quot;nil&quot;
Do While v &lt;&gt; &quot;&quot;
Range(r).Select
v = ActiveCell.Text
f = f + 1
r = &quot;A&quot; &amp; f
Loop

b = 1
a = &quot;A&quot; &amp; b
c = &quot;nil&quot;
Do While c &lt;&gt; &quot;&quot;
Range(a).Select
c = ActiveCell.Text
b = b + 1
a = &quot;A&quot; &amp; b
Loop
For i = 2 To b - 2
    srch = Range(&quot;C&quot; &amp; i).Text
     Columns(&quot;a:a&quot;).Select
       For q = 1 To f - 2
        On Error Resume Next
        Selection.Find(What:=srch, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
        
         Range(&quot;b&quot; &amp; ActiveCell.Row).FormulaR1C1 = ActiveCell.Text
    Next q
    Next i
End Sub</code></pre></div><p>Переносить текст не получилось, так как у меня возникли проблемы с обработкой ошибок. Может кто подкорректирует.</p></blockquote></div><p>Ето ка раз то што я искал</p>]]></content>
			<author>
				<name><![CDATA[gorih]]></name>
			</author>
			<updated>2011-04-12T07:27:33Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=47565#p47565</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: сортировать ячейки excel по содержимому]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=47057#p47057" />
			<content type="html"><![CDATA[<p>Всем огромное спасибо! Вы мне очень помогли!</p>]]></content>
			<author>
				<name><![CDATA[fsc_psd]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26180</uri>
			</author>
			<updated>2011-03-29T01:44:44Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=47057#p47057</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: сортировать ячейки excel по содержимому]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=46768#p46768" />
			<content type="html"><![CDATA[<p>Попытался сделать то, что вы хотели. Условия: таблица из трёх столбцов с заголовками (не обязательно такими, но обязательно с заголовками):</p><p>Наименования|&nbsp; &nbsp; Найденные|&nbsp; &nbsp; Что искать|<br />Гайка&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; &nbsp; &nbsp;гайк&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|<br />Гайка&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; &nbsp; &nbsp;шуруп&nbsp; &nbsp; &nbsp; |<br />шуруп&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</p><p>В первом столбце ваш список, в третьем - шаблоны поиска(условие: в 1 и 3 столбце не должно быть пустых ячеек между заполненными). Сам макрос:<br /></p><div class="codebox"><pre><code>Sub gaika()

f = 1
r = &quot;A&quot; &amp; f
v = &quot;nil&quot;
Do While v &lt;&gt; &quot;&quot;
Range(r).Select
v = ActiveCell.Text
f = f + 1
r = &quot;A&quot; &amp; f
Loop

b = 1
a = &quot;A&quot; &amp; b
c = &quot;nil&quot;
Do While c &lt;&gt; &quot;&quot;
Range(a).Select
c = ActiveCell.Text
b = b + 1
a = &quot;A&quot; &amp; b
Loop
For i = 2 To b - 2
    srch = Range(&quot;C&quot; &amp; i).Text
     Columns(&quot;a:a&quot;).Select
       For q = 1 To f - 2
        On Error Resume Next
        Selection.Find(What:=srch, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
        
         Range(&quot;b&quot; &amp; ActiveCell.Row).FormulaR1C1 = ActiveCell.Text
    Next q
    Next i
End Sub</code></pre></div><p>Переносить текст не получилось, так как у меня возникли проблемы с обработкой ошибок. Может кто подкорректирует.</p>]]></content>
			<author>
				<name><![CDATA[User419e]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26238</uri>
			</author>
			<updated>2011-03-24T13:44:54Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=46768#p46768</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: сортировать ячейки excel по содержимому]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=46767#p46767" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>fsc_psd пишет:</cite><blockquote><p>... не &quot;переносит&quot; значения, а копирует их &lt;...&gt; как дополнить формулу, чтобы именно переносила?..</p></blockquote></div><p>Если речь об удалении исходных данных, то с помощью формул этого сделать нельзя.<br />Здесь надо поступать так:<br />- выделить диапазон ячеек с результирующими данными;<br />- скопировать его содержимое в буфер обмена;<br />- не снимая выделения, указать курсором &quot;мыши&quot; внутрь этого диапазона и щёлкнуть правой кнопкой;<br />- в появившемся контекстном меню указать на команду &quot;Специальная вставка...&quot; и щёлкнуть любой кнопкой;<br />- в появившемся окне, в разделе &quot;Вставить&quot;, выбрать вариант &quot;Значения&quot; и нажать кнопку &quot;OK&quot;;<br />- очистить диапазон ячеек с исходными данными.</p><div class="quotebox"><cite>fsc_psd пишет:</cite><blockquote><p>... формулы &lt;...&gt; нужно предварительно разместить в соответствующих ячейках листа, и делать это нужно всякий раз, когда захочется посортировать новый файл. При больших размерах файла, и частой его смене, это может быть утомительно...</p></blockquote></div><p>Это ничуть не утомительнее, чем описанная выше процедура замены формул на вычисленные ими значения. Инструмент используется тот же. Только вставлять надо не значения, а формулы.</p><div class="quotebox"><cite>fsc_psd пишет:</cite><blockquote><p>... Макрос же в лучшем случае нужно просто запустить. В худшем - чуток подредактировать под новый формат файла...</p></blockquote></div><p>1. Макрос, так же, как и набор формул, должен в новой книге откуда-то появиться.<br />2. В таких случаях нередко удобнее поступать наоборот: не формулы копировать из старой книги в новую, а исходные данные из новой книги - в копию старой книги с уже настроенными формулами и форматами результирующих таблиц.</p><p>Впрочем, дело хозяйское: макрос, так макрос.<br />Новый вариант книги ищите здесь: <a href="http://fayloobmennik.net/494032">http://fayloobmennik.net/494032</a></p><p>Для сравнения я сохранил листы с формулами, при этом универсализировав их (формулы) и несколько расширив их возможности.<br />Пример обработки данных макросом представлен на листе &quot;Макрос&quot;.<br />Исходные данные я не стал удалять для наглядности результата.</p><p>Примечание: формулы, составленные из стандартных функций рабочего листа,- более быстрый инструмент, чем самый лучший макрос, выполняющий аналогичную работу.</p>]]></content>
			<author>
				<name><![CDATA[Dmitrii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=13351</uri>
			</author>
			<updated>2011-03-24T13:43:31Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=46767#p46767</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: сортировать ячейки excel по содержимому]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=46735#p46735" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Dmitrii пишет:</cite><blockquote><p>придётся пока довольствоваться моей &quot;стряпнёй&quot;</p></blockquote></div><p>Она прекрасно работает, большое вам спасибо!<br />Единственно только, она не &quot;переносит&quot; значения, а копирует их. Подскажите пожалуйста, как дополнить формулу, чтобы именно переносила?</p><p>И не сочтите за наглость, но тут пришло понимание того, почему хочется именно макрос: ваши формулы, пр всей их действенности, нужно предварительно разместить в соответствующих ячейках листа, и делать это нужно всякий раз, когда захочется посортировать новый файл. При больших размерах файла, и частой его смене, это может быть утомительно. Макрос же в лучшем случае нужно просто запустить. В худшем - чуток подредактировать под новый формат файла. Я прошу прошения за назойливость, но, может быть, подсобите-таки и с макросом?</p>]]></content>
			<author>
				<name><![CDATA[fsc_psd]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26180</uri>
			</author>
			<updated>2011-03-24T06:02:57Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=46735#p46735</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: сортировать ячейки excel по содержимому]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=46730#p46730" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>fsc_psd пишет:</cite><blockquote><p>... плохо знаю VBA, что даже не представляю, как можно найти информацию о нужных мне функциях...</p></blockquote></div><p>1. VBA и формулы, составленные из стандартных функций рабочего листа,- разные инструменты.<br />2. Встроенная справка Excel (как по функциям, так и по VBA) - очень хороший источник базовой информации.</p><div class="quotebox"><cite>fsc_psd пишет:</cite><blockquote><p>... Просто столбец ячеек с текстовыми значениями...</p></blockquote></div><p>Именно об этом и шла речь. Ну да ладно, придётся пока довольствоваться моей &quot;стряпнёй&quot;.<br />Здесь выложен файл с примером книги, данные на рабочих листах которой обрабатываются с помощью формул:<br /><a href="http://fayloobmennik.net/492785">http://fayloobmennik.net/492785</a></p>]]></content>
			<author>
				<name><![CDATA[Dmitrii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=13351</uri>
			</author>
			<updated>2011-03-23T20:08:50Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=46730#p46730</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: сортировать ячейки excel по содержимому]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=46649#p46649" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Dmitrii пишет:</cite><blockquote><p>На первый взгляд, Ваша задача совсем несложно решается</p></blockquote></div><p>Я искренне надеюсь, что это так. Но я настолько плохо знаю VBA, что даже не представляю, как можно найти информацию о нужных мне функциях.</p><div class="quotebox"><cite>Dmitrii пишет:</cite><blockquote><p>образец исходной таблицы</p></blockquote></div><p>Да нет пока никакой таблицы. Просто столбец ячеек с текстовыми значениями. Самый, так сказать, теоретический минимум.<br />Проверяем все ячейки, совпала часть содержимого с шаблоном - переносим соответствующую ячейку в соседнюю.</p>]]></content>
			<author>
				<name><![CDATA[fsc_psd]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26180</uri>
			</author>
			<updated>2011-03-23T02:51:12Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=46649#p46649</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBA: сортировать ячейки excel по содержимому]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=46499#p46499" />
			<content type="html"><![CDATA[<p>На первый взгляд, Ваша задача совсем несложно решается с помощью стандартных функций рабочего листа.<br />Почему решили прибегнуть именно к макросу?<br />Кстати, чтобы наводящих вопросов было меньше, а разговор по теме имел бы более предметный характер, полезно посмотреть на образец исходной таблицы (если не секрет, конечно).</p>]]></content>
			<author>
				<name><![CDATA[Dmitrii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=13351</uri>
			</author>
			<updated>2011-03-21T13:16:14Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=46499#p46499</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBA: сортировать ячейки excel по содержимому]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=46475#p46475" />
			<content type="html"><![CDATA[<p>Здравствуйте!<br />Помогите, пожалуйста сделать макрос, который бы сортировал ячейки по их содержимому. Суть задачи такова: есть файл, в первом столбце которого много-много ячеек с наименованиями. Хотелось бы, чтобы макрос сканировал все непустые ячейки этого столбца (ну, или просто ячейки от первой до произвольной; или до 65535) и при совпадении хотя бы части содержимого с шаблоном (например, &quot;гайка&quot; или, лучше, &quot;гайк*&quot;), переносил всё содержимое ячейки в соседнюю (т.е. в ячейку соседнего столбца, имеющую тот же номер, что и исходная). Совсем здорово было бы, если бы макрос сканировал ячейки на совпадение с несколькими шаблонами, например &quot;гайк*&quot;, &quot;шуру*&quot; и &quot;гвозд*&quot; и брал бы эти значения шаблонов из опредленных, специально предназначенных для этого, ячеек; а переносил не только в соседнюю ячейку, а в ячейку с заданным смещением (для каждого шаблона - свое смещение; гайки - в соседнюю, шурупы - в &quot;через одну&quot; и т.д.).</p>]]></content>
			<author>
				<name><![CDATA[fsc_psd]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26180</uri>
			</author>
			<updated>2011-03-21T02:40:47Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=46475#p46475</id>
		</entry>
</feed>
